Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
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
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.
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).
Als u code hebt die slechts in één TFM werkt, kunt u TFM-afhankelijke code scheiden met
#if NET45of#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 } }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-instructieImportgebruiken om deze op te nemen.Directory.Build.PropsenDirectory.Build.Targetsworden ook ondersteund vanaf MSBuild 15.0.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>