Uwaga
Dostęp do tej strony wymaga autoryzacji. Może 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
polecenia lub msbuild /t:pack
utworzyć pakiet.
Uwaga
nuget.exe interfejs wiersza polecenia nie obsługuje pakowania projektów w stylu zestawu SDK, dlatego należy używać tylko polecenia dotnet pack
lub msbuild /t:pack
. Zalecamy dołączenie wszystkich właściwości , które zwykle znajdują się w .nuspec
pliku w pliku projektu. Aby kierować wiele wersji programu .NET Framework w projekcie w stylu innego niż ZESTAW SDK, zobacz Obsługa wielu wersji programu .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>
na:
<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 programie TFM, możesz użyć
#if NET45
lub#if NETSTANDARD2_0
oddzielić kod zależny od serwera TFM. (Aby uzyskać więcej informacji, zobacz Jak wielotarget.) 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 umieścić w pliku 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
PropertyGroup
elementu lub umieścić właściwości NuGet w innym pliku i użyć dyrektywy MSBuildImport
, aby ją uwzględnić.Directory.Build.Props
iDirectory.Build.Targets
są również obsługiwane począwszy od msBuild 15.0.Teraz użyj
dotnet pack
elementów i wynikowych elementów docelowych .nupkg zarówno .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>