Obsoletioner i klassbiblioteket för .NET Framework

.NET Framework har ändrats över tid. Varje ny version har lagt till nya typer och typmedlemmar som tillhandahåller nya funktioner. Befintliga typer och deras medlemmar har också ändrats över tid. Till exempel blev vissa typer mindre viktiga eftersom den teknik som de stödde ersattes av en ny teknik, och vissa metoder ersattes av nyare metoder som är överlägsna på något sätt.

.NET Framework och common language runtime strävar efter att stödja bakåtkompatibilitet (vilket gör att program som har utvecklats med en version av .NET Framework kan köras på nästa version av .NET Framework). Detta gör det svårt att helt enkelt ta bort en typ eller en typmedlem. I stället angav .NET Framework att en typ eller en typmedlem inte längre ska användas genom att markera den som föråldrad eller inaktuell. Genom att dölja en typ eller en medlem var utvecklarna medvetna om att den skulle försvinna och hade tid att svara på borttagningen. Befintlig kod som använder typen eller medlemmen fortsatte dock att köras i den nya versionen av .NET.

Kommentar

I .NET (Core) innebär obsoleting av ett API inte nödvändigtvis att API:et tas bort. Mer information finns i API-borttagning i .NET.

Attributet ObsoleteAttribute

.NET Framework anger att en typ- eller typmedlem är föråldrad genom att markera den med attributet ObsoleteAttribute . Om attributet tillämpas på en typ eller medlem anges att typen eller medlemmen kommer att tas bort i någon framtida version utan att den kompilerade kod som använder den medlemmen bryts.

Förutom att ange att en typ eller en typmedlem är föråldrad definierar ObsoleteAttribute hur kompilatorn hanterar källkod som innehåller den typen eller medlemmen. Kompilatorn kan kompilera koden men skicka ett varningsmeddelande, eller så kan den behandla användningen av typen eller medlemmen som ett fel. I det första fallet kan koden kompileras, men ett varningsmeddelande anger att typen eller medlemmen är föråldrad. I det andra fallet misslyckas kompilering.

Även om kompilering genererar ett fel i stället för ett varningsmeddelande påverkar ObsoleteAttribute inte körningsbeteendet. Det vill: program som använder typen eller medlemmen och som har kompilerats kommer alltid att köras korrekt. Endast försöket att kompilera om ett program som använder typen eller medlemmen misslyckas.

Hantera föråldrade typer och medlemmar

När du uppgraderar och kompilera om befintlig kod är det acceptabelt att använda en föråldrad typ eller medlem som skapar en kompilatorvarning i ditt program. Du bör dock granska varningsmeddelandet för kompilatorn för att avgöra om du ska ändra programkoden. Om meddelandet inte pekar på ett lämpligt alternativ bör du göra något av följande:

  • Ändra koden genom att ta bort användningen av typen eller medlemmen, om möjligt.

    -eller-

  • Läs dokumentationen för det här teknikområdet för att avgöra hur du ska reagera på utfasningen.

Du kan välja att inte kompilera om befintlig kod mot en senare version av .NET Framework. I stället kan du ange vilken version av .NET Framework som din befintliga kompilerade kod körs mot. Anta till exempel att du har ett program med namnet app1.exe som kompilerats mot .NET Framework 3.5, men du vill att programmet ska köras mot .NET Framework 4.5. Detta kräver följande steg:

  1. Skapa en konfigurationsfil för den körbara huvudfilen och ge den namnet appName.exe.config, där appName är namnet på det körbara programmet. För programmet med namnet app1.exe i vårt exempel skapar du en konfigurationsfil med namnet app1.exe.config.

  2. Lägg till följande i konfigurationsfilen.

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

Om du vill rikta in dig på en specifik version av .NET Framework tilldelar du något av följande strängvärden till version attributet:

.NET Framework-version version Sträng
4.8 (inklusive 4.8.1) v4.0
4.7 (inklusive 4.7.1 och 4.7.2) v4.0
4.6 (inklusive 4.6.1 och 4.6.2) v4.0
4.5 (inklusive 4.5.1 och 4.5.2) v4.0
4 v4.0
3.5 v2.0.50727
2.0 v2.0.50727
1,1 v1.1.4322
1.0 v1.0.3705

Föråldrade API:er för .NET Framework 4.5 och senare versioner

Föråldrade API:er för tidigare versioner

Se även