Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Wenn Sie ein Projekt zum ersten Mal erstellen, empfehlen wir, eine .NET Standard-Klassenbibliothek zu erstellen, da sie Kompatibilität mit der größtmöglichen Palette von verbrauchenden Projekten bietet. Mithilfe von .NET Standard fügen Sie standardmäßig plattformübergreifende Unterstützung zu einer .NET-Bibliothek hinzu. In einigen Szenarien müssen Sie möglicherweise auch Code einschließen, der auf ein bestimmtes Framework abzielt. In diesem Artikel wird beschrieben, wie Sie dies für SDK-Formatprojekte tun.
Für Projekte im SDK-Stil können Sie die Unterstützung für mehrere Zielframeworks (TFM) in Ihrer Projektdatei konfigurieren und dann dotnet pack oder msbuild /t:pack verwenden, um das Paket zu erstellen.
Hinweis
nuget.exe CLI unterstützt das Packen von SDK-Stil-Projekten nicht, sodass Sie nur dotnet pack oder msbuild /t:pack nutzen sollten. Es wird empfohlen, dass Sie alle Eigenschaften einbeziehen, die sich normalerweise in der .nuspec Datei befinden, stattdessen in der Projektdatei. Informationen zum Ziel mehrerer .NET Framework-Versionen in einem Projekt im Nicht-SDK-Stil finden Sie unter Unterstützen mehrerer .NET Framework-Versionen.
Erstellen eines Projekts, das mehrere .NET Framework-Versionen unterstützt
Erstellen Sie eine neue .NET Standard-Klassenbibliothek entweder in Visual Studio oder verwenden Sie
dotnet new classlib.Es wird empfohlen, eine .NET Standard-Klassenbibliothek für optimale Kompatibilität zu erstellen.
Bearbeiten Sie die CSPROJ-Datei , um die Zielframeworks zu unterstützen. Ändern Sie z. B.
<TargetFramework>netstandard2.0</TargetFramework>to:
<TargetFrameworks>netstandard2.0;net45</TargetFrameworks>Stellen Sie sicher, dass Sie das XML-Element von Singular zu Plural ändern (fügen Sie die "s" sowohl zu den geöffneten als auch zu schließenden Tags hinzu).
Wenn Sie Code haben, der nur in einem TFM funktioniert, können Sie ihn mit
#if NET45oder#if NETSTANDARD2_0trennen, um TFM-abhängigen Code zu kennzeichnen. (Weitere Informationen finden Sie unter How to multitarget.) Sie können beispielsweise den folgenden Code verwenden: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 } }Fügen Sie alle gewünschten NuGet-Metadaten als MSBuild-Eigenschaften zum .csproj hinzu.
Die Liste der verfügbaren Paketmetadaten und die Namen der MSBuild-Eigenschaften finden Sie unter Pack-Ziel. Siehe auch Steuern von Abhängigkeitsressourcen.
Wenn Sie buildbezogene Eigenschaften von NuGet-Metadaten trennen möchten, können Sie eine andere
PropertyGroupverwenden oder die NuGet-Eigenschaften in eine andere Datei einfügen und die MSBuild-DirektiveImportverwenden, um sie einzuschließen.Directory.Build.PropsundDirectory.Build.Targetswerden auch ab MSBuild 15.0 unterstützt."Verwenden Sie nun
für die resultierende .nupkg sowohl für .NET Standard 2.0 als auch für .NET Framework 4.5."
Dies ist die CSPROJ-Datei , die mithilfe der vorherigen Schritte und .NET Core SDK 2.2 generiert wird.
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFrameworks>netstandard2.0;net45</TargetFrameworks>
<Description>Sample project that targets multiple TFMs</Description>
</PropertyGroup>
</Project>