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

A dotnet publish parancs alapértelmezés szerint a konfiguráció helyett a ReleaseDebug konfigurációt használja, ha a cél keretrendszer .NET 8 vagy újabb verzió.

Előző viselkedés

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

A PublishRelease 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_PUBLISH_RELEASE_FOR_SOLUTIONS környezeti változó egy Visual Studio-megoldás részét képező projektben legyen használva PublishRelease .

Új viselkedés

Ha a .NET 8 SDK-val vagy egy újabb verzióval fejleszt, alapértelmezés szerint a konfigurációt használja azokhoz a Release projektekheznet8.0, dotnet publish amelyeknek TargetFramework a beállítása vagy egy újabb verzió. 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.

Ha a projekt több verziót céloz meg, az új viselkedés csak akkor érvényes, ha a közzétételkor (például dotnet publish -f net8.0a használatával) a .NET 8-as vagy újabb verziójának célkeretét adja meg.

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

  • dotnet publish az összes projektet közzéteheti egy Visual Studio-megoldásban, ha adott egy megoldásfájlt. A .NET 8-as vagy újabb verzióját megcélzó megoldásprojektek esetében PublishRelease a rendszer implicit módon úgy van beállítva, hogy true nincs definiálva. dotnet publish A megoldáshoz használandó megfelelő konfiguráció meghatározásához azonban a megoldás összes projektjének meg kell egyeznie a megoldás értékévelPublishRelease. Ha a megoldás egy régebbi projektje már be van PublishRelease állítva false, akkor a tulajdonságot false kifejezetten minden új .NET 8+ projekthez is meg kell adnia.

  • Ez a változás a regresszió teljesítményét okozhatja dotnet publish , 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_PUBLISH_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 a közzétételkor optimalizálni szeretné a kódot, és a hibakeresési információk kizárásával kisebbre állíthatja az alkalmazást. Az ügyfelek hosszú ideje az alapértelmezett konfigurációt publish kértékRelease. Emellett a Visual Studio már évek óta ezt a viselkedést használja.

A DOTNET_CLI_ENABLE_PUBLISH_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 közzététel konfigurálásának explicit megadásához Debug használja a -c/> dotnet publishlehetőséget.--configuration

  • 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 közzétesz egy megoldást, és az nem működik, explicit módon beállíthatja PublishReleasetrue (vagy false visszaállíthatja az előző viselkedést).

    <PropertyGroup>
      <PublishRelease>true</PublishRelease>
    </PropertyGroup>
    

    Másik lehetőségként megadhatja a tulajdonságot egy Directory.Build.Props fájlban. Ha azonban ebben a fájlban állítja be false , akkor is explicit módon kell beállítania a tulajdonságot false a megoldás .NET 8+ projektjeiben. Hasonlóképpen, ha egyes projektek kifejezetten a Directory.Build.Props fájl értékétől eltérő értéket adnak meg, a közzététel sikertelen lesz.

  • Ha egy megoldást tesz közzé, és a teljesítmény visszafejlődött, 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 azonban beállítja ezt a változót, és a megoldás egy .NET 8+ projektet és egy .NET 7-et vagy korábbi verziót célbavevő projektet tartalmaz, a közzététel mindaddig sikertelen lesz, amíg az összes projekt meg nem határoz PublishRelease. Ez a változó mind dotnet publish a dotnet pack.

Lásd még