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.
Vytvoření projektu, který podporuje více 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>
Cílení na více verzí s duplicitními architekturami
Počínaje NuGetem 7.6 / .NET SDK 10.0.300 můžete použít více TargetFrameworks hodnot, které vedou ke stejnému základnímu rámci. To umožňuje případy použití, jako je sestavení pro více prostředí runtime nebo zaměřování na různé verze hostitelské aplikace z jednoho projektu.
Podrobnosti o tom, jak to funguje s obnovením a balíčkem, najdete v tématu Cílení na více architektur.