Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
              Kommandotdotnet publish använder nu konfigurationen Release i stället för konfigurationen Debug som standard om målramverket är .NET 8 eller en senare version.
Tidigare beteende
              dotnet publish Tidigare använde du konfigurationen Debug om inte konfigurationen uttryckligen angavs eller PublishRelease var inställd på true.
              EgenskapenPublishRelease lades till i .NET 7 som ett steg framåt för denna kompatibilitetsbrytande ändring. Tidigare kunde du ange miljövariabeln DOTNET_CLI_ENABLE_PUBLISH_RELEASE_FOR_SOLUTIONS som ska användas PublishRelease i ett projekt som ingick i en Visual Studio-lösning.
Nytt beteende
Om du utvecklar med .NET 8 SDK eller en senare version dotnet publish använder du konfigurationen Release som standard för projekt vars TargetFramework är inställt på net8.0 eller en senare version. Om du har ett CI/CD-skript, tester eller kod där du har hårdkodat Debug till en utdatasökväg kan den här ändringen bryta arbetsflödet.
Om projektet riktar sig mot flera versioner gäller det nya beteendet endast om du anger ett målramverk för .NET 8 eller senare när du publicerar (till exempel med ).dotnet publish -f net8.0
För projekt i en lösning:
- dotnet publishkan publicera alla projekt i en Visual Studio-lösning om de får en lösningsfil. För lösningsprojekt som riktar in sig på .NET 8 eller senare, sätts värdet för- PublishReleaseautomatiskt till- trueom det är odefinierat. Men för- dotnet publishatt kunna fastställa rätt konfiguration som ska användas för lösningen måste alla projekt i lösningen komma överens om värdet för- PublishRelease. Om ett äldre projekt i lösningen har- PublishReleaseangetts till- false, bör du uttryckligen ställa in egenskapen till- falseför alla nya .NET 8+-projekt.
- Den här ändringen kan leda till att resultatet för - dotnet publishförsämras, särskilt för lösningar som innehåller många projekt. För att åtgärda detta har en ny miljövariabel- DOTNET_CLI_LAZY_PUBLISH_AND_PACK_RELEASE_FOR_SOLUTIONSintroducerats.
- Miljövariabeln - DOTNET_CLI_ENABLE_PUBLISH_RELEASE_FOR_SOLUTIONSkänns inte längre igen.
Version lanserad
Förhandsversion 1 av .NET 8
Typ av brytande ändring
Den här ändringen kan påverka källkompatibiliteten och är också en beteendeförändring.
Orsak till ändring
I de flesta fall när du publicerar vill du att koden ska optimeras och kan hålla appen mindre genom att exkludera felsökningsinformation. Kunder har bett Release om att vara standardkonfigurationen under publish en längre tid. Visual Studio har också haft det här beteendet i många år.
Miljövariabeln DOTNET_CLI_ENABLE_PUBLISH_RELEASE_FOR_SOLUTIONS togs bort eftersom det beteende som den aktiverade nu är standardbeteendet och den detaljerade kontrollen inte längre behövs.
Rekommenderad åtgärd
- Om du vill inaktivera det nya beteendet helt kan du ange - DOTNET_CLI_DISABLE_PUBLISH_AND_PACK_RELEASEmiljövariabeln till- true(eller något annat värde). Den här variabeln påverkar både- dotnet publishoch- dotnet pack.
- Om du uttryckligen vill ange konfigurationen - Debugför publicering använder du- -calternativet eller- --configurationmed- dotnet publish.
- Om din CI/CD-pipeline bryts på grund av hårdkodade utdatasökvägar, uppdaterar du sökvägarna till - Releasei stället för- Debug, inaktiverar det nya beteendet med hjälp av miljövariabeln- DOTNET_CLI_DISABLE_PUBLISH_AND_PACK_RELEASEeller anger att konfigurationen- Debugska användas.
- Om du publicerar en lösning och den inte fungerar kan du uttryckligen ändra - PublishReleasetill- true(eller kan du- falseför att återgå till det tidigare beteendet).- <PropertyGroup> <PublishRelease>true</PublishRelease> </PropertyGroup>- Du kan också ange egenskapen i en Directory.Build.Props-fil . Men om du anger den - falsei den här filen måste du fortfarande uttryckligen ange egenskapen till- falseför .NET 8+-projekten som ingår i lösningen. På samma sätt misslyckas publiceringen om vissa projekt uttryckligen anger ett värde som skiljer sig från värdet i filen Directory.Build.Props .
- Om du publicerar en lösning och prestandan har regresserats kan du ange - DOTNET_CLI_LAZY_PUBLISH_AND_PACK_RELEASE_FOR_SOLUTIONSmiljövariabeln till- true(eller något annat värde) för att ta bort regressionen. Men om du anger den här variabeln och lösningen innehåller ett .NET 8+-projekt och ett projekt som riktar sig mot .NET 7 eller tidigare misslyckas publiceringen tills alla projekt definierar- PublishRelease. Den här variabeln påverkar både- dotnet publishoch- dotnet pack.