Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Podczas pierwszego tworzenia projektu zalecamy utworzenie biblioteki klas .NET Standard, ponieważ zapewnia ona zgodność z najszerszym zakresem projektów zużywających. Korzystając z platformy .NET Standard, domyślnie dodajesz obsługę międzyplatformową do biblioteki .NET. Jednak w niektórych scenariuszach może być również konieczne dołączenie kodu przeznaczonego dla określonej platformy. W tym artykule pokazano, jak to zrobić dla projektów w stylu zestawu SDK .
W przypadku projektów w stylu zestawu SDK można skonfigurować obsługę wielu platform docelowych (TFM) w pliku projektu, a następnie użyć dotnet pack lub msbuild /t:pack do utworzenia pakietu.
Uwaga / Notatka
nuget.exe interfejs wiersza polecenia nie obsługuje pakowania projektów w stylu zestawu SDK, więc należy używać tylko polecenia dotnet pack lub msbuild /t:pack. Zalecamy, aby uwzględnić wszystkie właściwości, które zwykle znajdują się w pliku .nuspec, w pliku projektu. Aby obsługiwać wiele wersji platformy .NET Framework w projekcie typu nie-SDK, zobacz Obsługa wielu wersji platformy .NET Framework.
Tworzenie projektu obsługującego wiele wersji programu .NET Framework
Utwórz nową bibliotekę klas .NET Standard w programie Visual Studio lub użyj polecenia
dotnet new classlib.Zalecamy utworzenie biblioteki klas .NET Standard w celu uzyskania najlepszej zgodności.
Edytuj plik csproj , aby obsługiwać platformy docelowe. Na przykład zmień
<TargetFramework>netstandard2.0</TargetFramework>do:
<TargetFrameworks>netstandard2.0;net45</TargetFrameworks>Upewnij się, że zmieniono element XML z liczby pojedynczej na liczbę mnogą (dodaj "s" do otwartych i zamkniętych tagów).
Jeśli masz jakikolwiek kod, który działa tylko w jednym TFM, możesz użyć
#if NET45lub#if NETSTANDARD2_0aby oddzielić kod zależny od TFM. (Aby uzyskać więcej informacji, zobacz Jak wielokierunkowo docelować.) Można na przykład użyć następującego kodu: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 } }Dodaj wszystkie metadane NuGet, które chcesz, do .csproj jako właściwości MSBuild.
Aby uzyskać listę dostępnych metadanych pakietu i nazwy właściwości MSBuild, zobacz element docelowy pakietu. Zobacz również Kontrolowanie zasobów zależności.
Jeśli chcesz oddzielić właściwości związane z kompilacją od metadanych NuGet, możesz użyć innego
PropertyGroupelementu lub umieścić właściwości NuGet w innym pliku i użyć dyrektywy MSBuildImport, aby ją uwzględnić.Directory.Build.PropsiDirectory.Build.Targetssą również obsługiwane począwszy od msBuild 15.0.Teraz użyj
dotnet packi wynikowych pakietów .nupkg zarówno dla .NET Standard 2.0, jak i .NET Framework 4.5.
Oto plik csproj generowany przy użyciu powyższych kroków i zestawu .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>