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.
Erstellen eines Projekts, das mehrere .NET Frameworks 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>
Multi-Targeting mit duplizierten Frameworks
Ab NuGet 7.6 / .NET SDK 10.0.300 können Sie mehrere TargetFrameworks Werte verwenden, die in dasselbe zugrunde liegende Framework aufgelöst werden. Dies ermöglicht Szenarien wie das Erstellen für mehrere Laufzeitumgebungen oder das Anvisieren mehrerer Versionen einer Hostanwendung von einem einzigen Projekt aus.
Ausführliche Informationen dazu, wie dies mit Wiederherstellung und Pack funktioniert, finden Sie unter "Targeting multiple frameworks".