Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
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 gebruikte dotnet publish de Debug configuratie, tenzij de configuratie expliciet was opgegeven of PublishRelease was ingesteld op true.
De PublishRelease eigenschap is in .NET 7 toegevoegd als oplossing voor deze ingrijpende wijziging. 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, wordt de dotnet publish configuratie standaard gebruikt voor projecten waarvan Release is ingesteld op TargetFramework of een latere versie. Als u een CI/CD-script, tests of code hebt waarin u Debug hardcode in een uitvoerpad hebt geplaatst, kan deze wijziging verstoring in uw werkstroom veroorzaken.
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 publishkan 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 vanPublishReleaseimpliciet ingesteld optrueals deze niet is gedefinieerd.dotnet publishOm 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 isPublishReleaseingesteld opfalse, moet u de eigenschapfalseook expliciet instellen voor nieuwe .NET 8+-projecten.Deze wijziging kan de prestaties van
dotnet publishregressies veroorzaken, met name voor oplossingen die veel projecten bevatten. Hiertoe is een nieuwe omgevingsvariabeleDOTNET_CLI_LAZY_PUBLISH_AND_PACK_RELEASE_FOR_SOLUTIONSgeïntroduceerd.De
DOTNET_CLI_ENABLE_PUBLISH_RELEASE_FOR_SOLUTIONSomgevingsvariabele wordt niet meer herkend.
Geïntroduceerde versie
.NET 8 Preview 1
Type van brekende verandering
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 om `Release` de standaardconfiguratie voor `publish` te maken. 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_RELEASEomgevingsvariabeletrueinstellen op (of een andere waarde). Deze variabele is van invloed op zoweldotnet publishalsdotnet pack.Als u expliciet de
Debugconfiguratie voor publicatie wilt opgeven, gebruikt u de-cof--configurationoptie metdotnet publish.Als uw CI/CD-pijplijn is verbroken vanwege vastgelegde uitvoerpaden, werkt u de paden bij naar
Releasein plaats van, schakelt u het nieuwe gedrag uit met behulp vanDebugdeDOTNET_CLI_DISABLE_PUBLISH_AND_PACK_RELEASEomgevingsvariabele of geeft u op dat deDebugconfiguratie moet worden gebruikt.Als u een oplossing publiceert en deze is kapot, kunt u expliciet
PublishReleaseinstellen naartrue(offalseom terug te keren naar het vorige gedrag).<PropertyGroup> <PublishRelease>true</PublishRelease> </PropertyGroup>U kunt het alternatief de eigenschap opgeven in een Directory.Build.Props-bestand. Als u dit
falseechter instelt in dit bestand, moet u de eigenschapfalsenog 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_SOLUTIONSomgevingsvariabeletrueinstellen 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 publishalsdotnet pack.