Kompatibilita verzí

Zpětná kompatibilita znamená, že aplikace vyvinutá pro konkrétní verzi platformy se bude spouštět na novějších verzích této platformy. Rozhraní .NET Framework se snaží maximalizovat zpětnou kompatibilitu: Zdrojový kód napsaný pro jednu verzi rozhraní .NET Framework by se měl zkompilovat na novějších verzích rozhraní .NET Framework a binární soubory, které běží na jedné verzi rozhraní .NET Framework, by se měly chovat stejně v novějších verzích rozhraní .NET Framework.

Kompatibilita verzí pro aplikace

Ve výchozím nastavení aplikace běží na verzi rozhraní .NET Framework, pro kterou byla vytvořena. Pokud tato verze není k dispozici a konfigurační soubor aplikace nedefinuje podporované verze, může dojít k chybě inicializace rozhraní .NET Framework. V takovém případě se pokus o spuštění aplikace nezdaří.

Pokud chcete definovat konkrétní verze, na kterých vaše aplikace běží, přidejte do konfiguračního souboru aplikace jeden nebo více podporovaných elementůRuntime>.< Každý <supportedRuntime> prvek obsahuje seznam podporovaných verzí modulu runtime, přičemž první určuje upřednostňovanou verzi a poslední určující nejméně upřednostňovanou verzi.

<configuration>
   <startup>
      <supportedRuntime version="v2.0.50727" />
      <supportedRuntime version="v4.0" />
   </startup>
</configuration>

Další informace naleznete v tématu Postupy: Konfigurace aplikace pro podporu rozhraní .NET Framework 4 nebo 4.x.

Kompatibilita verzí pro komponenty

Aplikace může řídit verzi rozhraní .NET Framework, na které běží, ale komponenta nemůže. Komponenty a knihovny tříd se načítají v kontextu konkrétní aplikace a proto se automaticky spouštějí ve verzi rozhraní .NET Framework, na které aplikace běží.

Kvůli tomuto omezení jsou záruky kompatibility zvláště důležité pro komponenty. Počínaje rozhraním .NET Framework 4 můžete určit, do jaké míry se očekává, že komponenta zůstane kompatibilní ve více verzích, a to použitím atributu System.Runtime.Versioning.ComponentGuaranteesAttribute na danou komponentu. Nástroje mohou tento atribut použít k detekci potenciálních porušení záruky kompatibility v budoucích verzích komponenty.

Zpětná kompatibilita

Rozhraní .NET Framework 4.5 a novější verze jsou zpětně kompatibilní s aplikacemi vytvořenými s dřívějšími verzemi rozhraní .NET Framework. Jinými slovy, aplikace a komponenty vytvořené s předchozími verzemi budou fungovat bez úprav v rozhraní .NET Framework 4.5 a novějších verzích. Ve výchozím nastavení ale aplikace běží ve verzi modulu CLR (Common Language Runtime), pro který byly vyvinuty, takže možná budete muset poskytnout konfigurační soubor, který umožní spuštění aplikace v rozhraní .NET Framework 4.5 nebo novějších verzích. Další informace najdete v části Kompatibilita verzí pro aplikace uvedené výše v tomto článku.

V praxi může být tato kompatibilita přerušena zdánlivě nekonvenčními změnami v rozhraní .NET Framework a změnami v programovacích technikách. Například vylepšení výkonu v rozhraní .NET Framework 4.5 mohou vystavit stav časování, ke kterému nedošlo v dřívějších verzích. Podobně použití pevně zakódované cesty k sestavením rozhraní .NET Framework, provádění porovnání rovnosti s konkrétní verzí rozhraní .NET Framework a získání hodnoty soukromého pole pomocí reflexe nejsou zpětně kompatibilní postupy. Kromě toho každá verze rozhraní .NET Framework obsahuje opravy chyb a změny související se zabezpečením, které můžou ovlivnit kompatibilitu některých aplikací a komponent.

Pokud vaše aplikace nebo komponenta nefunguje podle očekávání v rozhraní .NET Framework 4.5 nebo novější verzi, použijte následující kontrolní seznamy:

  • Pokud byla vaše aplikace vyvinuta tak, aby běžela na libovolné verzi rozhraní .NET Framework počínaje rozhraním .NET Framework 4.0, přečtěte si téma Kompatibilita aplikací pro generování seznamů změn mezi cílovou verzí rozhraní .NET Framework a verzí, na které je vaše aplikace spuštěná.

  • Pokud máte aplikaci .NET Framework 3.5, projděte si také problémy s migrací rozhraní .NET Framework 4.

  • Pokud máte aplikaci .NET Framework 2.0, podívejte se také na změny v rozhraní .NET Framework 3.5 SP1.

  • Pokud máte aplikaci .NET Framework 1.1, podívejte se také na změny v rozhraní .NET Framework 2.0.

  • Pokud rekompilujete existující zdrojový kód tak, aby běžel na rozhraní .NET Framework 4.5 nebo jeho bodových verzích, nebo pokud vyvíjíte novou verzi aplikace nebo komponenty, která cílí na vydání .NET Framework 4.5 nebo jeho bodu z existujícího základu zdrojového kódu, zkontrolujte , co je zastaralé v knihovně tříd pro zastaralé typy a členy, a použijte popsané alternativní řešení. (Dříve zkompilovaný kód bude nadále spuštěn proti typům a členům, které byly označeny jako zastaralé.)

  • Pokud zjistíte, že změna v rozhraní .NET Framework 4.5 přerušila vaši aplikaci, zkontrolujte schéma modulu runtime Nastavení a zejména< element AppContextSwitchOverrides> a zjistěte, jestli můžete použít nastavení modulu runtime v konfiguračním souboru aplikace k obnovení předchozího chování.

  • Pokud narazíte na problém, který není zdokumentovaný, otevřete problém na webu komunity vývojářů pro .NET nebo otevřete problém v úložišti Microsoft/dotnet Na GitHubu.

Souběžné spouštění

Pokud nemůžete najít vhodné alternativní řešení pro váš problém, mějte na paměti, že rozhraní .NET Framework 4.5 (nebo jedna z jeho bodových verzí) běží souběžně s verzemi 1.1, 2.0 a 3.5 a je místní aktualizace, která nahrazuje verzi 4. U aplikací, které cílí na verze 1.1, 2.0 a 3.5, můžete na cílový počítač nainstalovat příslušnou verzi rozhraní .NET Framework, aby se aplikace spustila v nejlepším prostředí. Další informace o souběžné provádění naleznete v tématu Souběžné spuštění.

Viz také