Delen via


'dotnet publish' maakt gebruik van releaseconfiguratie

De dotnet publish opdracht gebruikt nu de Release configuratie in plaats van de Debug configuratie standaard als het doelframework .NET 8 of een latere versie is.

Vorig gedrag

Eerder hebt dotnet publish u de Debug configuratie gebruikt, tenzij de configuratie expliciet is opgegeven of PublishRelease is ingesteld op true.

De PublishRelease eigenschap is in .NET 7 toegevoegd als pad naar deze wijziging die fouten veroorzaken. Voorheen kon u de DOTNET_CLI_ENABLE_PUBLISH_RELEASE_FOR_SOLUTIONS omgevingsvariabele instellen voor gebruik PublishRelease in een project dat deel uitmaakte van een Visual Studio-oplossing.

Nieuw gedrag

Als u ontwikkelt met de .NET 8 SDK of een latere versie, dotnet publish wordt de configuratie standaard gebruikt voor projecten waarvan TargetFramework de Release configuratie is ingesteld net8.0 op of een latere versie. Als u een CI/CD-script, tests of code hebt waarvoor u code hebt vastgelegd Debug in een uitvoerpad, kan deze wijziging uw werkstroom verbreken.

Als uw project is gericht op meerdere versies, is het nieuwe gedrag alleen van toepassing als u een doelframework van .NET 8 of hoger opgeeft wanneer u publiceert (bijvoorbeeld met behulp van dotnet publish -f net8.0).

Voor projecten in een oplossing:

  • dotnet publish kan alle projecten in een Visual Studio-oplossing publiceren als er een oplossingsbestand wordt gegeven. Voor de oplossingsprojecten die gericht zijn op .NET 8 of hoger, wordt de waarde PublishRelease impliciet ingesteld true op als deze niet is gedefinieerd. dotnet publish Om echter de juiste configuratie te kunnen bepalen die voor de oplossing moet worden gebruikt, moeten alle projecten in de oplossing akkoord gaan met hun waarde van PublishRelease. Als een ouder project in de oplossing is PublishRelease ingesteld op false, moet u de eigenschap false ook expliciet instellen voor nieuwe .NET 8+-projecten.

  • Deze wijziging kan de prestaties van dotnet publish regressies veroorzaken, met name voor oplossingen die veel projecten bevatten. Hiertoe is een nieuwe omgevingsvariabele DOTNET_CLI_LAZY_PUBLISH_AND_PACK_RELEASE_FOR_SOLUTIONS geïntroduceerd.

  • De DOTNET_CLI_ENABLE_PUBLISH_RELEASE_FOR_SOLUTIONS omgevingsvariabele wordt niet meer herkend.

Versie geïntroduceerd

.NET 8 Preview 1

Type wijziging die fouten veroorzaken

Deze wijziging kan van invloed zijn op de broncompatibiliteit en is ook een gedragswijziging.

Reden voor wijziging

In de meeste gevallen wanneer u publiceert, wilt u dat uw code is geoptimaliseerd en de app kleiner kan houden door foutopsporingsgegevens uit te sluiten. Klanten hebben al lange tijd gevraagd Release om de standaardconfiguratie publish te zijn. Bovendien heeft Visual Studio dit gedrag al vele jaren gehad.

De DOTNET_CLI_ENABLE_PUBLISH_RELEASE_FOR_SOLUTIONS omgevingsvariabele is verwijderd omdat het gedrag dat is ingeschakeld nu het standaardgedrag is en het gedetailleerde besturingselement niet meer nodig is.

  • Als u het nieuwe gedrag volledig wilt uitschakelen, kunt u de DOTNET_CLI_DISABLE_PUBLISH_AND_PACK_RELEASE omgevingsvariabele true instellen op (of een andere waarde). Deze variabele is van invloed op zowel dotnet publish als dotnet pack.

  • Als u expliciet de Debug configuratie voor publicatie wilt opgeven, gebruikt u de -c of --configuration optie met dotnet publish.

  • Als uw CI/CD-pijplijn is verbroken vanwege vastgelegde uitvoerpaden, werkt u de paden bij naar Release in plaats van, schakelt u het nieuwe gedrag uit met behulp van Debugde DOTNET_CLI_DISABLE_PUBLISH_AND_PACK_RELEASE omgevingsvariabele of geeft u op dat de Debug configuratie moet worden gebruikt.

  • Als u een oplossing publiceert en deze is verbroken, kunt u expliciet instellen PublishReleasetrue op (of false terugkeren naar het vorige gedrag).

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

    U kunt ook de eigenschap opgeven in een Map.Build.Props-bestand . Als u dit false echter instelt in dit bestand, moet u de eigenschap false nog steeds expliciet instellen in de .NET 8+-projecten in de oplossing. Als sommige projecten expliciet een andere waarde instellen dan de waarde in het bestand Directory.Build.Props , mislukt het publiceren.

  • Als u een oplossing publiceert en de prestaties zijn teruggedraaid, kunt u de DOTNET_CLI_LAZY_PUBLISH_AND_PACK_RELEASE_FOR_SOLUTIONS omgevingsvariabele true instellen op (of een andere waarde) om de regressie te verwijderen. Als u deze variabele echter instelt en uw oplossing een .NET 8+ project en een project bevat dat is gericht op .NET 7 of eerder, mislukt het publiceren totdat alle projecten zijn gedefinieerd PublishRelease. Deze variabele is van invloed op zowel dotnet publish als dotnet pack.

Zie ook