Versionskompatibilitet
Bakåtkompatibilitet innebär att en app som har utvecklats för en viss version av en plattform körs på senare versioner av plattformen. .NET Framework försöker maximera bakåtkompatibiliteten: Källkoden som skrivits för en version av .NET Framework bör kompileras på senare versioner av .NET Framework, och binärfiler som körs på en version av .NET Framework bör bete sig identiskt på senare versioner av .NET Framework.
Versionskompatibilitet för appar
Som standard körs en app på den version av .NET Framework som den skapades för. Om den versionen inte finns och appkonfigurationsfilen inte definierar versioner som stöds kan ett .NET Framework-initieringsfel inträffa. I det här fallet misslyckas försöket att köra appen.
Om du vill definiera de specifika versioner som appen körs på lägger du till ett eller flera <körningselement som stöds> i appens konfigurationsfil. Varje <supportedRuntime>
element visar en version av körningen som stöds, där den första anger den mest föredragna versionen och den senaste som anger den minst föredragna versionen.
<configuration>
<startup>
<supportedRuntime version="v2.0.50727" />
<supportedRuntime version="v4.0" />
</startup>
</configuration>
Mer information finns i Så här konfigurerar du en app för att stödja .NET Framework 4 eller 4.x.
Versionskompatibilitet för komponenter
En app kan styra vilken version av .NET Framework som den körs på, men en komponent kan inte göra det. Komponenter och klassbibliotek läses in i kontexten för en viss app och därför körs de automatiskt på den version av .NET Framework som appen körs på.
På grund av den här begränsningen är kompatibilitetsgarantier särskilt viktiga för komponenter. Från och med .NET Framework 4 kan du ange i vilken grad en komponent förväntas förbli kompatibel i flera versioner genom att tillämpa attributet på System.Runtime.Versioning.ComponentGuaranteesAttribute komponenten. Verktyg kan använda det här attributet för att identifiera potentiella överträdelser av kompatibilitetsgarantin i framtida versioner av en komponent.
Bakåtkompatibilitet
.NET Framework 4.5 och senare versioner är bakåtkompatibla med appar som har skapats med tidigare versioner av .NET Framework. Med andra ord fungerar appar och komponenter som skapats med tidigare versioner utan ändringar i .NET Framework 4.5- och senare versioner. Men som standard körs appar på den version av den vanliga språkkörningen som de har utvecklats för, så du kan behöva ange en konfigurationsfil för att appen ska kunna köras på .NET Framework 4.5 eller senare versioner. Mer information finns i avsnittet Versionskompatibilitet för appar tidigare i den här artikeln.
I praktiken kan den här kompatibiliteten brytas genom till synes oviktiga ändringar i .NET Framework och ändringar i programmeringstekniker. Prestandaförbättringar i .NET Framework 4.5 kan till exempel exponera ett konkurrenstillstånd som inte inträffade i tidigare versioner. På samma sätt är det inte bakåtkompatibla metoder att använda en hårdkodad sökväg till .NET Framework-sammansättningar, utföra en likhetsjämförelse med en viss version av .NET Framework och hämta värdet för ett privat fält med hjälp av reflektion. Dessutom innehåller varje version av .NET Framework felkorrigeringar och säkerhetsrelaterade ändringar som kan påverka kompatibiliteten för vissa appar och komponenter.
Om din app eller komponent inte fungerar som förväntat på .NET Framework 4.5 eller en senare version använder du följande checklistor:
Om din app har utvecklats för att köras på någon version av .NET Framework från och med .NET Framework 4.0 läser du Programkompatibilitet för att generera listor över ändringar mellan din målversion av .NET Framework och den version som appen körs på.
Om du har en .NET Framework 3.5-app kan du även läsa .NET Framework 4-migreringsproblem.
Om du har en .NET Framework 2.0-app kan du även läsa Ändringar i .NET Framework 3.5 SP1.
Om du har en .NET Framework 1.1-app kan du även läsa Ändringar i .NET Framework 2.0.
Om du omkompilerar befintlig källkod som ska köras på .NET Framework 4.5 eller dess punktutgåvor, eller om du utvecklar en ny version av en app eller komponent som riktar sig mot .NET Framework 4.5 eller dess punktutgåvor från en befintlig källkodsbas, kontrollerar du Vad är föråldrat i klassbiblioteket för föråldrade typer och medlemmar. och tillämpa den lösning som beskrivs. (Tidigare kompilerad kod fortsätter att köras mot typer och medlemmar som har markerats som föråldrade.)
Om du bedömer att en ändring i .NET Framework 4.5 har brutit din app kontrollerar du Körningsschemat Inställningar och särskilt <AppContextSwitchOverrides-elementet> för att avgöra om du kan använda en körningsinställning i appens konfigurationsfil för att återställa det tidigare beteendet.
Om du stöter på ett problem som inte är dokumenterat öppnar du ett problem på webbplatsen Developer Community för .NET eller öppnar ett problem på GitHub-lagringsplatsen Microsoft/dotnet.
Körning sida vid sida
Om du inte hittar någon lämplig lösning på problemet bör du komma ihåg att .NET Framework 4.5 (eller någon av dess punktversioner) körs sida vid sida med version 1.1, 2.0 och 3.5 och är en uppdatering på plats som ersätter version 4. För appar som är målversionerna 1.1, 2.0 och 3.5 kan du installera rätt version av .NET Framework på måldatorn för att köra appen i den bästa miljön. Mer information om körning sida vid sida finns i Körning sida vid sida.