Delen via


Ondersteuning voor meerdere .NET Framework-versies in uw projectbestand

Wanneer u voor het eerst een project maakt, wordt u aangeraden een .NET Standard-klassebibliotheek te maken, omdat deze compatibiliteit biedt met het breedste scala aan verbruikende projecten. Met .NET Standard voegt u standaard platformoverschrijdende ondersteuning toe aan een . NET-bibliotheek . In sommige scenario's moet u echter mogelijk ook code opnemen die gericht is op een bepaald framework. In dit artikel leest u hoe u dit kunt doen voor SDK-projecten .

Voor SDK-projecten kunt u ondersteuning configureren voor meerdere doelenframeworks (TFM) in uw projectbestand en vervolgens dotnet pack of msbuild /t:pack gebruiken om het pakket te maken.

Opmerking

nuget.exe CLI biedt geen ondersteuning voor het verpakken van SDK-stijl projecten, dus moet u alleen dotnet pack of msbuild /t:pack gebruiken. We raden aan dat u alle eigenschappen die zich gewoonlijk in het .nuspec-bestand bevinden, in plaats daarvan in het projectbestand opneemt. Zie Ondersteuning voor meerdere .NET Framework-versies in een niet-SDK-project als u meerdere .NET Framework-versies wilt gebruiken.

Een project maken dat ondersteuning biedt voor meerdere .NET Framework-versies

  1. Maak een nieuwe .NET Standard-klassebibliotheek in Visual Studio of gebruik dotnet new classlib.

    U wordt aangeraden een .NET Standard-klassebibliotheek te maken voor de beste compatibiliteit.

  2. Bewerk het .csproj-bestand om de doelframeworks te ondersteunen. Bijvoorbeeld: wijzigen

    <TargetFramework>netstandard2.0</TargetFramework>

    to:

    <TargetFrameworks>netstandard2.0;net45</TargetFrameworks>

    Zorg ervoor dat u het XML-element wijzigt van enkelvoud in meervoud (voeg de 's' toe aan zowel de geopende als de gesloten tags).

  3. Als u code hebt die slechts in één TFM werkt, kunt u TFM-afhankelijke code scheiden met #if NET45 of #if NETSTANDARD2_0. (Zie Multitarget voor meer informatie.) U kunt bijvoorbeeld de volgende code gebruiken:

    public string Platform {
       get {
    #if NET45
          return ".NET Framework"
    #elif NETSTANDARD2_0
          return ".NET Standard"
    #else
    #error This code block does not match csproj TargetFrameworks list
    #endif
       }
    }
    
  4. Voeg nuget-metagegevens toe die u wilt toevoegen aan de .csproj als MSBuild-eigenschappen.

    Zie het pakketdoel voor de lijst met beschikbare pakketmetagegevens en de msBuild-eigenschapsnamen. Zie Ook Het beheren van afhankelijkheidsassets.

    Als u build-gerelateerde eigenschappen van NuGet-metagegevens wilt scheiden, kunt u een ander PropertyGroupbestand gebruiken of de NuGet-eigenschappen in een ander bestand plaatsen en msBuild-instructie Import gebruiken om deze op te nemen. Directory.Build.Props en Directory.Build.Targets worden ook ondersteund vanaf MSBuild 15.0.

  5. Gebruik nu en het resulterende .nupkg bestand richt zich zowel op .NET Standard 2.0 als .NET Framework 4.5.

Hier volgt het .csproj-bestand dat wordt gegenereerd met behulp van de voorgaande stappen en .NET Core SDK 2.2.

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <TargetFrameworks>netstandard2.0;net45</TargetFrameworks>
    <Description>Sample project that targets multiple TFMs</Description>
  </PropertyGroup>

</Project>

Zie ook