Podpora více verzí .NET Framework v souboru projektuSupport multiple .NET Framework versions in your project file

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ů.When you first create a project, we recommend you create a .NET Standard class library, as it provides compatibility with the widest range of consuming projects. Pomocí .NET Standard přidáte do knihovny .NET standardně podporu více platforem .By using .NET Standard, you add cross-platform support to a .NET library by default. V některých scénářích však může být také nutné zahrnout kód, který cílí na konkrétní rozhraní.However, in some scenarios, you may also need to include code that targets a particular framework. V tomto článku se dozvíte, jak to udělat pro projekty ve stylu sady SDK .This article shows you how to do that for SDK-style projects.

Pro projekty ve stylu sady SDK můžete v souboru projektu nakonfigurovat podporu pro více cílů architektury (TFM) a pak pomocí dotnet pack nebo msbuild /t:pack vytvořit balíček.For SDK-style projects, you can configure support for multiple targets frameworks (TFM) in your project file, then use dotnet pack or msbuild /t:pack to create the package.

Poznámka

NuGet. exe CLI nepodporuje projekty ve stylu balíčku sady SDK, takže byste měli použít jenom dotnet pack nebo msbuild /t:pack.nuget.exe CLI does not support packing SDK-style projects, so you should only use dotnet pack or msbuild /t:pack. Doporučujeme, abyste místo toho zahrnuli všechny vlastnosti , které jsou obvykle v souboru .nuspec v souboru projektu.We recommend that you include all the properties that are usually in the .nuspec file in the project file instead. Chcete-li cílit na více .NET Framework verzí v projektu ve stylu mimo sadu SDK, přečtěte si téma Podpora více verzí .NET Framework.To target multiple .NET Framework versions in a non-SDK-style project, see Supporting multiple .NET Framework versions.

Vytvořit projekt, který podporuje více verzí .NET FrameworkCreate a project that supports multiple .NET Framework versions

  1. Vytvořte novou knihovnu tříd .NET Standard v aplikaci Visual Studio nebo použijte dotnet new classlib.Create a new .NET Standard class library either in Visual Studio or use dotnet new classlib.

    Pro zajištění nejlepší kompatibility doporučujeme vytvořit knihovnu tříd .NET Standard.We recommend that you create a .NET Standard class library for best compatibility.

  2. Upravte soubor . csproj pro podporu cílových rozhraní.Edit the .csproj file to support the target frameworks. Například změňteFor example, change

    <TargetFramework>netstandard2.0</TargetFramework>

    nato:

    <TargetFrameworks>netstandard2.0;net45</TargetFrameworks>

    Ujistěte se, že změníte element XML změněn z čísla v množném čísle na plural (přidejte "s" do počátečních a uzavíracích značek).Make sure that you change the XML element changed from singular to plural (add the "s" to both the open and close tags).

  3. Pokud máte nějaký kód, který funguje pouze v jednom TFM, můžete použít #if NET45 nebo #if NETSTANDARD2_0 pro oddělení kódu závislého na TFM.If you have any code that only works in one TFM, you can use #if NET45 or #if NETSTANDARD2_0 to separate TFM-dependent code. (Další informace najdete v tématu jak cílit na více cílů.) Například můžete použít následující kód:(For more information, see How to multitarget.) For example, you can use the following code:

    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 jakákoli metadata NuGet, která chcete, do vlastností . csproj jako vlastnosti MSBuild.Add any NuGet metadata you want to the .csproj as MSBuild properties.

    Seznam dostupných metadat balíčku a názvů vlastností MSBuild naleznete v tématu targeting pack.For the list of available package metadata and the MSBuild property names, see pack target. Viz také řízení prostředků závislosti.Also see Controlling dependency assets.

    Pokud chcete oddělit vlastnosti týkající se sestavení z metadat NuGet, můžete použít jinou PropertyGroup nebo umístit vlastnosti NuGet do jiného souboru a použít direktivu Import nástroje MSBuild k jejímu zahrnutí.If you want to separate build-related properties from NuGet metadata, you can use a different PropertyGroup, or put the NuGet properties in another file and use MSBuild's Import directive to include it. Directory.Build.Props a Directory.Build.Targets jsou také podporovány počínaje MSBuild 15,0.Directory.Build.Props and Directory.Build.Targets are also supported starting with MSBuild 15.0.

  5. Nyní použijte dotnet pack a výsledný nupkg cílí na .NET Standard 2,0 a .NET Framework 4,5.Now, use dotnet pack and the resulting .nupkg targets both .NET Standard 2.0 and .NET Framework 4.5.

Zde je soubor . csproj , který je generován pomocí předchozích kroků a .NET Core SDK 2,2.Here is the .csproj file that is generated using the preceding steps and .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é:See also