'dotnet pack' Sürüm yapılandırmasını kullanır
Kodu dotnet pack
bir NuGet paketine paketleyen komutu artık varsayılan olarak yapılandırma yerine yapılandırmayı Debug
kullanırRelease
.
Önceki davranış
Daha önce, dotnet pack
yapılandırma açıkça belirtilmediği veya PackRelease
olarak ayarlanmadığı sürece yapılandırmayı true
kullanıyorduDebug
.
özelliği PackRelease
bu hataya neden olan değişikliğe giden yol olarak .NET 7'ye eklendi. Daha önce, ortam değişkenini DOTNET_CLI_ENABLE_PACK_RELEASE_FOR_SOLUTIONS
Visual Studio çözümünün parçası olan bir projede kullanılacak PackRelease
şekilde ayarlayabilirsiniz.
Yeni davranış
.NET 8 SDK veya sonraki bir sürümle geliştiriyorsanız, dotnet pack
tüm projeler için varsayılan olarak yapılandırmayı Release
kullanır. Çıkış yoluna sabit kodladığınız Debug
bir CI/CD betiğiniz, testleriniz veya kodunuz varsa, bu değişiklik iş akışınızı bozabilir. Ayrıca, yapılandırma açıkça belirtilmediği sürece Debug
(örneğin, kullanarak dotnet pack --configuration Debug
) paketlenmiş bir uygulamada hata ayıklayamazsınız.
dotnet pack
aynı anda birden çok hedef çerçeve adı (TFM) için paketlenebilir. Projeniz birden çok sürümü hedef alıyorsa ve farklı hedefler için farklı PackRelease
değerleriniz varsa, bazı TFM'lerin yapılandırmayı paketlediği, bazılarının da yapılandırmayı Release
Debug
paketlediği bir çakışmaya sahip olabilirsiniz.
Çözümdeki projeler için:
dotnet pack
, bir çözüm dosyası verilirse visual studio çözümündeki tüm projeleri paketleyebilir. Çözümdeki her proje için değeriPackRelease
tanımlanmamışsa örtük olarak olarak ayarlanırtrue
. Kullanılacak doğru yapılandırmayı belirlemek içindotnet pack
çözümdeki tüm projelerin değeriniPackRelease
kabul etmesi gerekir.Bu değişiklik, özellikle çok sayıda proje içeren çözümler için performansının
dotnet pack
gerilemesi neden olabilir. Bu sorunu çözmek için yeni bir ortam değişkeniDOTNET_CLI_LAZY_PUBLISH_AND_PACK_RELEASE_FOR_SOLUTIONS
kullanıma sunulmuştur.Ortam
DOTNET_CLI_ENABLE_PACK_RELEASE_FOR_SOLUTIONS
değişkeni artık tanınmıyor.
Sürüm kullanıma sunulmuştur
.NET 8 Preview 1
Hataya neden olan değişikliğin türü
Bu değişiklik kaynak uyumluluğunu etkileyebilir ve aynı zamanda davranışsal bir değişikliktir.
Değişiklik nedeni
Çoğu durumda bir paket oluşturduğunuzda kodunuzun iyileştirilmiş olmasını ve hata ayıklama bilgilerini dışlayarak paketi daha küçük tutmasını istersiniz.
Etkinleştirildiği DOTNET_CLI_ENABLE_PACK_RELEASE_FOR_SOLUTIONS
davranış artık varsayılan davranış olduğundan ve ayrıntılı denetim artık gerekli olmadığından ortam değişkeni kaldırıldı.
Önerilen eylem
Yeni davranışı tamamen devre dışı bırakmak için ortam değişkenini
DOTNET_CLI_DISABLE_PUBLISH_AND_PACK_RELEASE
true
(veya başka bir değer) olarak ayarlayabilirsiniz. Bu değişken hem hemdotnet pack
dedotnet publish
'yi etkiler.Paketleme yapılandırmasını açıkça belirtmek
Debug
için veya--configuration
seçeneğini iledotnet pack
kullanın-c
.CI/CD işlem hattınız sabit kodlanmış çıkış yollarından dolayı bozuksa, ortam değişkenini kullanarak yeni
Release
Debug
davranışı devre dışı bırakın veya yapılandırmanınDOTNET_CLI_DISABLE_PUBLISH_AND_PACK_RELEASE
Debug
kullanılması gerektiğini belirtin.Bir çözümü paketliyorsanız ve bir veya daha fazla proje için
PackRelease
açıkça bir değer ayarladığından bu çözüm bozuksa, her projede açıkça olarakfalse
olarak ayarlamalısınızPackRelease
:<PropertyGroup> <PackRelease>false</PackRelease> </PropertyGroup>
Bir çözüm topluyorsanız ve performans gerilediyse, regresyonu kaldırmak için
true
ortam değişkenini (veya başka bir değer) olarak ayarlayabilirsinizDOTNET_CLI_LAZY_PUBLISH_AND_PACK_RELEASE_FOR_SOLUTIONS
. Bu değişkeni kullanırsanız ve herhangi bir proje tanımlarsaPackRelease
, tüm projeler bunu tanımlamalıdır veya bir Directory.Build.Props dosyası kullanabilirsiniz. Bu değişken hem hemdotnet pack
dedotnet publish
'yi etkiler.