Stručná odpověď je, že metoda chybí, protože někdo ve vývojovém týmu zapomněl použít atribut Obsolete. Tato metoda ve třídě TelemetryClient
v balíčku NuGet Microsoft.ApplicationInsights se používá velmi často. Po poslední aktualizaci balíčku prostě zmizel. Překvapivě tato metoda není uvedena v IntelliSense, ale starší kód, ve kterém se tato metoda používá, lze úspěšně zkompilovat bez jakékoli chyby nebo upozornění.
Případ
Chronologický sled událostí, který mě donutil napsat tento článek, byl následující:
23. května, Microsoft.ApplicationInsights, 2.6.4
Metoda TelemetryClient.TrackMetric
neobsahuje žádné shrnutí ani atribut, který by ovlivnil integrované vývojové prostředí (IDE).
7. srpna, Microsoft.ApplicationInsights, 2.7.1
Metoda TelemetryClient.TrackMetric
získá komentář k dokumentaci summary. Na tom není ve své podstatě nic špatného, ale informace, které obsahuje, nemají správnou sémantiku. Značka summary se používá k popisu typu nebo člena typu. Nejsou určeny k označení fáze jeho životního cyklu.
/// <summary>
/// This method is deprecated...
/// </summary>
11. srpna, Microsoft.ApplicationInsights, 2.7.2
O čtyři dny později je metoda TelemetryClient.TrackMetric
skryta v IntelliSense. Na tom není ve své podstatě nic špatného, ale tento krok znemožňuje vidět obsah výše uvedené značky summary.
[EditorBrowsable(EditorBrowsableState.Never)]
Moje doporučení
- Informujte uživatele vaší knihovny o ukončení podpory metody tím, že ji přiřadíte atributem
Obsolete
a dáte jim několik měsíců na přizpůsobení kódu vašim změnám. - Značku summary používejte k popisu funkčnosti, nikoli k oznamování průběhu životního cyklu.
- Použijte kontrolu kódu TFVC. Pokud musíte použít Git, použijte proces kontroly kódu.
- Obecně platí, že skrývání metody z IntelliSense není dobrý nápad, protože režie pro zpětnou kompatibilitu je skrytá. Má to smysl pouze ve výjimečných případech, například při vytváření nového frameworku kompatibilního se starším kódem napsaným pro předchůdce frameworku.