Zgodność wersji

Zgodność z poprzednimi wersjami oznacza, że aplikacja opracowana dla określonej wersji platformy będzie działać w nowszych wersjach tej platformy. Program .NET Framework próbuje zmaksymalizować zgodność z poprzednimi wersjami: kod źródłowy napisany dla jednej wersji programu .NET Framework powinien być kompilowany w nowszych wersjach programu .NET Framework, a pliki binarne uruchamiane w jednej wersji programu .NET Framework powinny zachowywać się identycznie w nowszych wersjach programu .NET Framework.

Zgodność wersji aplikacji

Domyślnie aplikacja jest uruchamiana w wersji programu .NET Framework, dla którego została utworzona. Jeśli ta wersja nie jest obecna, a plik konfiguracji aplikacji nie definiuje obsługiwanych wersji, może wystąpić błąd inicjowania programu .NET Framework. W takim przypadku próba uruchomienia aplikacji zakończy się niepowodzeniem.

Aby zdefiniować określone wersje, na których działa aplikacja, dodaj jeden lub więcej <obsługiwanych elementówRuntime> do pliku konfiguracji aplikacji. Każdy <supportedRuntime> element zawiera listę obsługiwanej wersji środowiska uruchomieniowego, a pierwszy określa najbardziej preferowaną wersję i ostatnią, określając najmniej preferowaną wersję.

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

Aby uzyskać więcej informacji, zobacz How to: Configure an App to Support .NET Framework 4 or 4.x (Jak skonfigurować aplikację do obsługi programu .NET Framework 4 lub 4.x).

Zgodność wersji składników

Aplikacja może kontrolować wersję programu .NET Framework, na której jest uruchomiona, ale składnik nie może. Składniki i biblioteki klas są ładowane w kontekście określonej aplikacji i dlatego są one automatycznie uruchamiane w wersji programu .NET Framework, na której działa aplikacja.

Ze względu na to ograniczenie gwarancje zgodności są szczególnie ważne dla składników. Począwszy od programu .NET Framework 4, można określić stopień, w jakim składnik ma pozostać zgodny w wielu wersjach, stosując System.Runtime.Versioning.ComponentGuaranteesAttribute atrybut do tego składnika. Narzędzia mogą używać tego atrybutu do wykrywania potencjalnych naruszeń gwarancji zgodności w przyszłych wersjach składnika.

Zgodność ze starszymi wersjami

Program .NET Framework 4.5 i nowsze wersje są zgodne z poprzednimi wersjami aplikacji utworzonych we wcześniejszych wersjach programu .NET Framework. Innymi słowy, aplikacje i składniki utworzone w poprzednich wersjach będą działać bez modyfikacji w programie .NET Framework 4.5 i nowszych wersjach. Jednak domyślnie aplikacje działają w wersji środowiska uruchomieniowego języka wspólnego, dla którego zostały opracowane, więc może być konieczne udostępnienie pliku konfiguracji, aby umożliwić uruchamianie aplikacji w wersji .NET Framework 4.5 lub nowszej. Aby uzyskać więcej informacji, zobacz sekcję Zgodność wersji dla aplikacji we wcześniejszej części tego artykułu.

W praktyce ta zgodność może być uszkodzona przez pozornie niekonsekwencyjne zmiany w programie .NET Framework i zmiany w technikach programowania. Na przykład ulepszenia wydajności w programie .NET Framework 4.5 mogą uwidocznić stan wyścigu, który nie wystąpił we wcześniejszych wersjach. Podobnie użycie zakodowanej ścieżki do zestawów .NET Framework, porównanie równości z określoną wersją programu .NET Framework i uzyskanie wartości pola prywatnego przy użyciu odbicia nie jest praktykami zgodnymi z poprzednimi wersjami. Ponadto każda wersja programu .NET Framework zawiera poprawki błędów i zmiany związane z zabezpieczeniami, które mogą mieć wpływ na zgodność niektórych aplikacji i składników.

Jeśli aplikacja lub składnik nie działa zgodnie z oczekiwaniami w programie .NET Framework 4.5 lub nowszej wersji, użyj następujących list kontrolnych:

  • Jeśli aplikacja została opracowana do uruchamiania w dowolnej wersji programu .NET Framework, począwszy od programu .NET Framework 4.0, zobacz Zgodność aplikacji, aby wygenerować listy zmian między docelową wersją programu .NET Framework a wersją, na której działa aplikacja.

  • Jeśli masz aplikację .NET Framework 3.5, zobacz również Temat Problemy z migracją programu .NET Framework 4.

  • Jeśli masz aplikację .NET Framework 2.0, zobacz również Zmiany w programie .NET Framework 3.5 SP1.

  • Jeśli masz aplikację .NET Framework 1.1, zobacz również Zmiany w programie .NET Framework 2.0.

  • Jeśli ponownie skompilujesz istniejący kod źródłowy do uruchomienia w programie .NET Framework 4.5 lub jego wydaniach punktów lub jeśli tworzysz nową wersję aplikacji lub składnika, który jest przeznaczony dla programu .NET Framework 4.5 lub jego wydania punktów z istniejącej bazy kodu źródłowego, sprawdź , co jest przestarzałe w bibliotece klas dla przestarzałych typów i elementów członkowskich, i zastosuj opisane obejście. (Wcześniej skompilowany kod będzie nadal działać względem typów i elementów członkowskich oznaczonych jako przestarzałe).

  • Jeśli ustalisz, że zmiana w programie .NET Framework 4.5 uszkodziła aplikację, sprawdź schemat Ustawienia środowiska uruchomieniowego, a w szczególności< element AppContextSwitchOverrides>, aby określić, czy możesz użyć ustawienia środowiska uruchomieniowego w pliku konfiguracji aplikacji w celu przywrócenia poprzedniego zachowania.

  • Jeśli wystąpi problem, który nie jest udokumentowany, otwórz problem w witrynie Społeczności deweloperów dla platformy .NET lub otwórz problem w repozytorium Microsoft/dotnet GitHub.

Wykonywanie równoczesne

Jeśli nie możesz znaleźć odpowiedniego obejścia problemu, pamiętaj, że program .NET Framework 4.5 (lub jedna z jego wersji punktów) działa obok wersji 1.1, 2.0 i 3.5 i jest aktualizacją w miejscu, która zastępuje wersję 4. W przypadku aplikacji przeznaczonych dla wersji 1.1, 2.0 i 3.5 można zainstalować odpowiednią wersję programu .NET Framework na maszynie docelowej, aby uruchomić aplikację w najlepszym środowisku. Aby uzyskać więcej informacji na temat wykonywania równoległego, zobacz Wykonywanie równoległe.

Zobacz też