'dotnet pack' maakt gebruik van releaseconfiguratie
De dotnet pack
opdracht, waarmee code in een NuGet-pakket wordt verpakt, gebruikt nu standaard de Release
configuratie in plaats van de Debug
configuratie.
Vorig gedrag
Eerder hebt dotnet pack
u de Debug
configuratie gebruikt, tenzij de configuratie expliciet is opgegeven of PackRelease
is ingesteld op true
.
De PackRelease
eigenschap is in .NET 7 toegevoegd als pad naar deze wijziging die fouten veroorzaken. Voorheen kon u de DOTNET_CLI_ENABLE_PACK_RELEASE_FOR_SOLUTIONS
omgevingsvariabele instellen voor gebruik PackRelease
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 pack
gebruikt u de Release
configuratie standaard voor alle projecten. 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. U kunt ook geen fouten opsporen in een verpakte app, tenzij de Debug
configuratie expliciet is opgegeven (bijvoorbeeld met behulp van dotnet pack --configuration Debug
.
dotnet pack
kan tegelijkertijd worden verpakt voor meerdere doelframework monikers (TFM). Als uw project is gericht op meerdere versies en u verschillende PackRelease
waarden voor verschillende doelen hebt, kunt u een conflict hebben waarbij sommige TFM's de Release
configuratie inpakken en andere de Debug
configuratie inpakken.
Voor projecten in een oplossing:
dotnet pack
kan alle projecten in een Visual Studio-oplossing inpakken als er een oplossingsbestand wordt gegeven. Voor elk project in de oplossing wordt de waardePackRelease
impliciet ingesteld op als deze niet is gedefinieerdtrue
. Omdotnet pack
de juiste configuratie te kunnen bepalen die moet worden gebruikt, moeten alle projecten in de oplossing akkoord gaan met hun waarde vanPackRelease
.Deze wijziging kan de prestaties van
dotnet pack
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_PACK_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 een pakket maakt, wilt u dat uw code is geoptimaliseerd en het pakket kleiner kan houden door foutopsporingsgegevens uit te sluiten.
De DOTNET_CLI_ENABLE_PACK_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 verpakking wilt opgeven, gebruikt u de-c
of--configuration
optie metdotnet pack
.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 inpakt en deze is verbroken omdat een of meer projecten expliciet een waarde voor
PackRelease
instellen, moet u in elk project expliciet instellenfalse
PackRelease
op:<PropertyGroup> <PackRelease>false</PackRelease> </PropertyGroup>
Als u een oplossing inpakt 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 gebruikt en elk project definieertPackRelease
, moeten alle projecten deze definiëren of kunt u een Map.Build.Props-bestand gebruiken. Deze variabele is van invloed op zoweldotnet publish
alsdotnet pack
.