Share via


A "dotnet pack" kiadási konfigurációt használ

A dotnet pack NuGet-csomagba kódot csomagoló parancs alapértelmezés szerint a konfiguráció helyett a ReleaseDebug konfigurációt használja.

Előző viselkedés

Korábban a konfigurációt Debug használta, kivéve, dotnet pack ha a konfiguráció explicit módon lett megadva, vagy PackRelease a beállítás értéke true.

A PackRelease tulajdonság a .NET 7-ben lett hozzáadva a kompatibilitástörő változáshoz vezető útként. Korábban beállíthatja, hogy a DOTNET_CLI_ENABLE_PACK_RELEASE_FOR_SOLUTIONS környezeti változó egy Visual Studio-megoldás részét képező projektben legyen használva PackRelease .

Új viselkedés

Ha a .NET 8 SDK-val vagy egy újabb verzióval fejleszt, dotnet pack alapértelmezés szerint minden projekthez használja a Release konfigurációt. Ha ci-/CD-szkripttel, tesztekkel vagy kóddal rendelkezik, amelyekben egy kimeneti elérési útra van kódolva Debug , ez a módosítás megszakíthatja a munkafolyamatot. Ezenkívül nem fog tudni hibakeresést végezni a csomagolt alkalmazásokban, ha a Debug konfiguráció kifejezetten meg lett adva (például a használatával dotnet pack --configuration Debug).

dotnet pack egyszerre több cél-keretrendszer-moniker (TFM) is telepíthető. Ha a projekt több verziót céloz meg, és különböző PackRelease értékekkel rendelkezik a különböző célokhoz, ütközést okozhat, ha egyes TFM-ek a konfigurációt, mások pedig a konfigurációt Debug csomagoljákRelease.

Megoldásban lévő projektek esetén:

  • dotnet pack a Visual Studio-megoldásban lévő összes projektet becsomagolhatja, ha adott egy megoldásfájlt. A megoldás minden projektjéhez PackRelease implicit módon be van állítva true , ha nincs definiálva. dotnet pack A megfelelő konfiguráció meghatározásához a megoldás összes projektjének meg kell egyeznie a megfelelő értékévelPackRelease.

  • Ez a változás a regresszió teljesítményét okozhatja dotnet pack , különösen a sok projektet tartalmazó megoldások esetében. Ennek megoldásához egy új környezeti változót DOTNET_CLI_LAZY_PUBLISH_AND_PACK_RELEASE_FOR_SOLUTIONS vezetünk be.

  • A DOTNET_CLI_ENABLE_PACK_RELEASE_FOR_SOLUTIONS környezeti változó már nem ismerhető fel.

Bevezetett verzió

.NET 8 előzetes verzió 1

A kompatibilitástörő változás típusa

Ez a módosítás hatással lehet a forráskompatibilitásra, és viselkedésbeli változás is.

A változás oka

A legtöbb esetben, amikor létrehoz egy csomagot, optimalizálni szeretné a kódot, és a hibakeresési információk kizárásával kisebbre állíthatja a csomagot.

A DOTNET_CLI_ENABLE_PACK_RELEASE_FOR_SOLUTIONS környezeti változó el lett távolítva, mivel az engedélyezett viselkedés most már az alapértelmezett viselkedés, és a részletes vezérlőre már nincs szükség.

  • Az új viselkedés teljes letiltásához beállíthatja a DOTNET_CLI_DISABLE_PUBLISH_AND_PACK_RELEASE környezeti változót true (vagy bármely más értéket). Ez a változó mind dotnet publish a dotnet pack.

  • A csomagolás konfigurálásának Debug explicit megadásához használja a -c--configuration következőt dotnet pack: .

  • Ha a CI/CD-folyamat a merevlemezes kimeneti elérési utak miatt megszakadt, frissítse az elérési utakat Release ahelyett Debug, hogy a környezeti változó használatával tiltsa le az DOTNET_CLI_DISABLE_PUBLISH_AND_PACK_RELEASE új viselkedést, vagy adja meg a Debug konfiguráció használatát.

  • Ha egy megoldást csomagol, és az megszakadt, mert egy vagy több projekt explicit módon beállít egy értéket, minden projektben explicit módon be kell állítania PackRelease az false értéketPackRelease:

    <PropertyGroup>
      <PackRelease>false</PackRelease>
    </PropertyGroup>
    
  • Ha egy megoldást csomagol, és a teljesítmény vissza lett állítva, a DOTNET_CLI_LAZY_PUBLISH_AND_PACK_RELEASE_FOR_SOLUTIONS környezeti változót true (vagy bármely más értéket) beállíthatja a regresszió eltávolításához. Ha ezt a változót és bármely projektet definiálja PackRelease, minden projektnek meg kell határoznia, vagy használhatja a Directory.Build.Props fájlt. Ez a változó mind dotnet publish a dotnet pack.

Lásd még