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

  1. 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.

  2. 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).

  3. 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
       }
    }
    
  4. 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 direktivu Import NÁSTROJE MSBuild k zahrnutí. Directory.Build.Props a Directory.Build.Targets podporují se také od MSBuild 15.0.

  5. 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>

Viz také