Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
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 SDK můžete nakonfigurovat podporu pro více cílových rámců (TFM) ve svém projektovém souboru a pak použít dotnet pack nebo msbuild /t:pack k vytvoření balíčku.
Poznámka:
nuget.exe CLI 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, místo toho 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>to:
<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é tagy).
Pokud máte kód, který funguje jenom v jednom TFM, můžete použít
#if NET45nebo#if NETSTANDARD2_0oddělit kód závislý na TFM. (Další informace najdete v tématu Jak používat víceodstrování.) 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í souborů závislostí.
Pokud chcete oddělit vlastnosti související se sestavením od metadat NuGetu, můžete použít jiný
PropertyGroup, nebo umístit vlastnosti NuGet do jiného souboru a použít direktivu MSBuild k zahrnutí.Directory.Build.PropsaDirectory.Build.Targetspodporují se také od MSBuild 15.0.Nyní použijte
dotnet packa 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>