Školení
Modul
Volání metod z knihovny tříd .NET pomocí jazyka C# - Training
Voláním metod, které vracejí hodnoty, přijímají vstupní parametry a další, můžete využívat funkce knihovny tříd .NET.
Tento prohlížeč se už nepodporuje.
Upgradujte na Microsoft Edge, abyste mohli využívat nejnovější funkce, aktualizace zabezpečení a technickou podporu.
V tomto kurzu se dozvíte, co znamená správa verzí v .NET. Dozvíte se také o faktorech, které je potřeba vzít v úvahu při správě verzí knihovny a také při upgradu na novou verzi knihovny.
Kompilátor jazyka C# je součástí sady .NET SDK. Kompilátor ve výchozím nastavení zvolí jazykovou verzi jazyka C#, která odpovídá zvolenému TFM pro váš projekt. Pokud je verze sady SDK větší než vámi zvolená architektura, kompilátor může použít vyšší jazykovou verzi. Výchozí nastavení můžete změnit nastavením LangVersion
prvku v projektu. V našem článku o možnostech kompilátoru se dozvíte, jak na to.
Upozornění
LangVersion
Nastavení prvku na latest
hodnotu se nedoporučuje. Nastavení latest
znamená, že nainstalovaný kompilátor používá nejnovější verzi. To se může změnit z počítače na počítač a vytvářet nespolehlivé buildy. Kromě toho umožňuje funkce jazyka, které mohou vyžadovat funkce modulu runtime nebo knihovny, které nejsou součástí aktuální sady SDK.
Jako vývojář, který vytvořil knihovny .NET pro veřejné použití, jste s největší pravděpodobností v situacích, kdy musíte zavést nové aktualizace. Na tomto procesu záleží hodně, protože potřebujete zajistit bezproblémový přechod existujícího kódu na novou verzi knihovny. Při vytváření nové verze je potřeba vzít v úvahu několik věcí:
Sémantická správa verzí (SemVer for short) je konvence pojmenování použitá pro verze vaší knihovny, která označuje konkrétní události milníků. V ideálním případě by informace o verzi, které knihovně poskytnete, měly pomoct vývojářům určit kompatibilitu s jejich projekty, které používají starší verze stejné knihovny.
Nejzásadnější přístup k SemVeru je formát MAJOR.MINOR.PATCH
3 komponent , kde:
MAJOR
se zvýší, když provedete nekompatibilní změny rozhraní API.MINOR
se zvýší, když přidáváte funkce zpětně kompatibilním způsobem.PATCH
se zvýší, když provedete opravy chyb kompatibilní se zpětnou kompatibilitou.Existují také způsoby, jak určit jiné scénáře, například předběžné verze, při použití informací o verzi v knihovně .NET.
Při vydávání nových verzí knihovny bude zpětnou kompatibilitou s předchozími verzemi pravděpodobně jedním z hlavních problémů. Nová verze knihovny je zdroj kompatibilní s předchozí verzí, pokud kód, který závisí na předchozí verzi, může při rekompilování pracovat s novou verzí. Nová verze knihovny je binární kompatibilní, pokud aplikace, která závisí na staré verzi, může bez rekompilace pracovat s novou verzí.
Při pokusu o zachování zpětné kompatibility se staršími verzemi knihovny je potřeba vzít v úvahu několik věcí:
Poznámka
Nepovinné povinné argumenty by měly mít velmi malý účinek, zejména pokud nezmění chování metody.
Čím jednodušší je, že uživatelé upgradují na novou verzi knihovny, tím pravděpodobnější bude, že se budou upgradovat dříve.
Jako vývojář .NET existuje velmi vysoká pravděpodobnost, že jste narazili na app.config
soubor , který je ve většině typů projektů.
Tento jednoduchý konfigurační soubor může trvat dlouhou dobu, než se zlepší zavedení nových aktualizací. Knihovny byste obecně měli navrhnout tak, aby informace, které se pravděpodobně budou pravidelně měnit, byly uloženy v app.config
souboru, tímto způsobem při aktualizaci těchto informací, konfigurační soubor starších verzí je potřeba nahradit pouze novým, aniž by bylo nutné překompilace knihovny.
Jako vývojář, který využívá knihovny .NET vytvořené jinými vývojáři, s největší pravděpodobností víte, že nová verze knihovny nemusí být plně kompatibilní s vaším projektem a často se může stát, že budete muset aktualizovat kód, aby tyto změny fungovaly.
Pro vás je prostředí C# a ekosystém .NET vybaveny funkcemi a technikami, které nám umožňují snadno aktualizovat naši aplikaci tak, aby fungovala s novými verzemi knihoven, které by mohly zavádět zásadní změny.
Pomocí souboru app.config můžete aktualizovat verzi knihovny, kterou vaše aplikace používá. Přidáním toho, co se nazývá přesměrování vazby, můžete použít novou verzi knihovny, aniž byste museli aplikaci znovu zkompilovat. Následující příklad ukazuje, jak byste aktualizovali soubor app.config vaší aplikace tak, aby používal 1.0.1
verzi ReferencedLibrary
opravy namísto 1.0.0
verze, se kterou byla původně zkompilována.
<dependentAssembly>
<assemblyIdentity name="ReferencedLibrary" publicKeyToken="32ab4ba45e0a69a1" culture="en-us" />
<bindingRedirect oldVersion="1.0.0" newVersion="1.0.1" />
</dependentAssembly>
Poznámka
Tento přístup bude fungovat jenom v případě, že nová verze ReferencedLibrary
je binární kompatibilní s vaší aplikací.
Informace o změnách při určování kompatibility najdete v části Zpětná kompatibilita výše.
Modifikátor slouží new
ke skrytí zděděných členů základní třídy. Toto je jeden ze způsobů, jak odvozené třídy mohou reagovat na aktualizace v základních třídách.
Podívejte se na následující příklad:
public class BaseClass
{
public void MyMethod()
{
Console.WriteLine("A base method");
}
}
public class DerivedClass : BaseClass
{
public new void MyMethod()
{
Console.WriteLine("A derived method");
}
}
public static void Main()
{
BaseClass b = new BaseClass();
DerivedClass d = new DerivedClass();
b.MyMethod();
d.MyMethod();
}
Výstup
A base method
A derived method
Z výše uvedeného příkladu vidíte, jak DerivedClass
skryje metodu MyMethod
, která je přítomna v BaseClass
.
To znamená, že když základní třída v nové verzi knihovny přidá člena, který již existuje ve vaší odvozené třídě, můžete jednoduše použít new
modifikátor u člena odvozené třídy ke skrytí člena základní třídy.
Pokud není zadán žádný new
modifikátor, odvozená třída ve výchozím nastavení skryje konfliktní členy v základní třídě, i když se vygeneruje upozornění kompilátoru, kód bude stále kompilován. To znamená, že pouhé přidání nových členů do existující třídy způsobí, že nová verze knihovny bude zdrojová i binární kompatibilní s kódem, který na něm závisí.
override
Modifikátor znamená, že odvozená implementace rozšiřuje implementaci člena základní třídy namísto skrytí. Člen základní třídy musí mít virtual
použitý modifikátor.
public class MyBaseClass
{
public virtual string MethodOne()
{
return "Method One";
}
}
public class MyDerivedClass : MyBaseClass
{
public override string MethodOne()
{
return "Derived Method One";
}
}
public static void Main()
{
MyBaseClass b = new MyBaseClass();
MyDerivedClass d = new MyDerivedClass();
Console.WriteLine("Base Method One: {0}", b.MethodOne());
Console.WriteLine("Derived Method One: {0}", d.MethodOne());
}
Výstup
Base Method One: Method One
Derived Method One: Derived Method One
override
Modifikátor se vyhodnocuje v době kompilace a kompilátor vyvolá chybu, pokud nenajde virtuálního člena, který má přepsat.
Vaše znalosti o probíraných technikách a porozumění situacím, ve kterých je použít, vám pomůžou zmírnit přechod mezi verzemi knihovny.
Zpětná vazba k produktu .NET
.NET je open source projekt. Vyberte odkaz pro poskytnutí zpětné vazby:
Školení
Modul
Volání metod z knihovny tříd .NET pomocí jazyka C# - Training
Voláním metod, které vracejí hodnoty, přijímají vstupní parametry a další, můžete využívat funkce knihovny tříd .NET.