Podpora více verzí rozhraní .NET Framework v souboru projektu
Při prvním vytvoření projektu doporučujeme vytvořit knihovnu tříd .NET Standard, protože poskytuje kompatibilitu s nejširší škálou náročných projektů. Pomocí .NET Standard přidáte do knihovny .NET ve výchozím nastavení podporu pro různé platformy. V některých scénářích ale může být také nutné zahrnout kód, který cílí na konkrétní architekturu. V tomto článku se dozvíte, jak to udělat pro projekty ve stylu sady SDK.
U projektů ve stylu sady SDK můžete nakonfigurovat podporu pro více cílových architektur (TFM) v souboru projektu a pak balíček použít dotnet pack
nebo msbuild /t:pack
vytvořit.
Poznámka:
nuget.exe ROZHRANÍ příkazového řádku nepodporuje balení projektů ve stylu sady SDK, takže byste měli použít dotnet pack
pouze nebo msbuild /t:pack
. Doporučujeme zahrnout všechny vlastnosti , které jsou obvykle v .nuspec
souboru v souboru projektu. Pokud chcete cílit na více verzí rozhraní .NET Framework v projektu bez sady SDK, přečtěte si téma Podpora více verzí rozhraní .NET Framework.
Vytvoření projektu, který podporuje více verzí rozhraní .NET Framework
Vytvořte novou knihovnu tříd .NET Standard v sadě Visual Studio nebo použijte
dotnet new classlib
.Pro zajištění nejlepší kompatibility doporučujeme vytvořit knihovnu tříd .NET Standard.
Upravte soubor .csproj tak, aby podporoval cílové architektury. Například změnit
<TargetFramework>netstandard2.0</TargetFramework>
na:
<TargetFrameworks>netstandard2.0;net45</TargetFrameworks>
Ujistěte se, že jste změnili element XML z jednotného čísla na množné číslo (přidejte "s" na otevřené i zavřené značky).
Pokud máte kód, který funguje jenom v jednom TFM, můžete použít
#if NET45
nebo#if NETSTANDARD2_0
oddělit kód závislý na TFM. (Další informace najdete v tématu Jak provést vícestranné cílení.) Můžete například použít následující kód: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 } }
Přidejte všechna metadata NuGet, která chcete do souboru .csproj přidat jako vlastnosti nástroje MSBuild.
Seznam dostupných metadat balíčku a názvů vlastností MSBuild naleznete v tématu cíl balíčku. Viz také řízení prostředků závislostí.
Pokud chcete oddělit vlastnosti související s sestavením od metadat NuGet, můžete použít jiný
PropertyGroup
, nebo umístit Vlastnosti NuGet do jiného souboru a použít direktivuImport
NÁSTROJE MSBuild k zahrnutí.Directory.Build.Props
aDirectory.Build.Targets
podporují se také od MSBuild 15.0.Nyní použijte
dotnet pack
a výsledný .nupkg cílí na .NET Standard 2.0 i .NET Framework 4.5.
Tady je soubor .csproj , který se vygeneruje pomocí předchozích kroků a sady .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>