'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 waardePublishRelease
impliciet ingesteldtrue
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 vanPublishRelease
. Als een ouder project in de oplossing isPublishRelease
ingesteld opfalse
, moet u de eigenschapfalse
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 omgevingsvariabeleDOTNET_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.
Aanbevolen actie
Als u het nieuwe gedrag volledig wilt uitschakelen, kunt u de
DOTNET_CLI_DISABLE_PUBLISH_AND_PACK_RELEASE
omgevingsvariabeletrue
instellen op (of een andere waarde). Deze variabele is van invloed op zoweldotnet publish
alsdotnet pack
.Als u expliciet de
Debug
configuratie voor publicatie wilt opgeven, gebruikt u de-c
of--configuration
optie metdotnet 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 vanDebug
deDOTNET_CLI_DISABLE_PUBLISH_AND_PACK_RELEASE
omgevingsvariabele of geeft u op dat deDebug
configuratie moet worden gebruikt.Als u een oplossing publiceert en deze is verbroken, kunt u expliciet instellen
PublishRelease
true
op (offalse
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 eigenschapfalse
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
omgevingsvariabeletrue
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 gedefinieerdPublishRelease
. Deze variabele is van invloed op zoweldotnet publish
alsdotnet pack
.