Megosztás a következőn keresztül:


Több .NET-keretrendszer-verzió támogatása a projektfájlban

Amikor először hoz létre egy projektet, javasoljuk, hogy hozzon létre egy .NET Standard osztálytárat, mivel az kompatibilitást biztosít a legszűkebb mennyiségű projekttel. A .NET Standard használatával alapértelmezés szerint platformfüggetlen támogatást ad hozzá egy .NET-kódtárhoz. Bizonyos esetekben azonban előfordulhat, hogy egy adott keretrendszert célzó kódot is tartalmaznia kell. Ez a cikk bemutatja, hogyan teheti ezt SDK-stílusú projektekhez.

SDK-stílusú projektek esetén a projektfájlban több cél-keretrendszer (TFM) támogatását konfigurálhatja, majd használhatja dotnet pack vagy msbuild /t:pack létrehozhatja a csomagot.

Megjegyzés:

nuget.exe CLI nem támogatja az SDK-stílusú projektek csomagolását, ezért csak a dotnet pack vagy a msbuild /t:pack lehetőségeket használhatja. Javasoljuk, hogy a projektfájlban általában szereplő .nuspec a projektfájlba. Ha egy nem SDK-stílusú projektben több .NET-keretrendszer-verziót szeretne megcélzni, olvassa el a több .NET-keretrendszerverzió támogatásával kapcsolatos témakört.

Több .NET-keretrendszerverziót támogató projekt létrehozása

  1. Hozzon létre egy új .NET Standard osztálytárat a Visual Studióban vagy használja dotnet new classlib.

    Javasoljuk, hogy hozzon létre egy .NET Standard osztálykódtárat a legjobb kompatibilitás érdekében.

  2. Szerkessze a .csproj fájlt a cél-keretrendszerek támogatásához. Például: módosítás

    <TargetFramework>netstandard2.0</TargetFramework>

    to:

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

    Győződjön meg arról, hogy az XML-elemet többes számról többesre módosította (adja hozzá az "s" elemet a nyitott és a záró címkékhez is).

  3. Ha olyan kóddal rendelkezik, amely csak egy TFM-ben működik, használhatja #if NET45 vagy #if NETSTANDARD2_0 elkülönítheti a TFM-függő kódot. (További információ: How to multitarget.) Használhatja például a következő kódot:

    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. Adjon hozzá minden NuGet-metaadatot, amelyet MSBuild tulajdonságként szeretne hozzáadni a .csprojhoz .

    Az elérhető csomag metaadatainak és az MSBuild tulajdonságneveknek a listáját lásd: csomagcél. Lásd még: Függőségi eszközök szabályozása.

    Ha el szeretné különíteni a buildel kapcsolatos tulajdonságokat a NuGet-metaadatoktól, használhat egy másikat PropertyGroup, vagy elhelyezheti a NuGet-tulajdonságokat egy másik fájlban, és az MSBuild irányelvével Import belefoglalhatja azt. Directory.Build.Props és Directory.Build.Targets az MSBuild 15.0-val kezdődően is támogatottak.

  5. Most használja a dotnet pack-t, és az eredményként kapott .nupkg célozza a .NET Standard 2.0-t és a .NET Framework 4.5-öt.

Itt található a .csproj fájl, amely az előző lépések és a .NET Core SDK 2.2 használatával jön létre.

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <TargetFrameworks>netstandard2.0;net45</TargetFrameworks>
    <Description>Sample project that targets multiple TFMs</Description>
  </PropertyGroup>

</Project>

Lásd még