Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Kodu dotnet packbir NuGet paketine paketleyen komutu artık varsayılan olarak yapılandırma yerine yapılandırmayı Release kullanırDebug.
Önceki davranış
Daha önce, dotnet pack, Debug yapılandırması kullanılmadıkça veya yapılandırma açıkça belirtilmediği sürece PackRelease yapılandırmasını kullanıyordu.
özelliğiPackRelease bu köklü değişikliğe yönelik bir çözüm olarak .NET 7'ye eklendi. Daha önce, DOTNET_CLI_ENABLE_PACK_RELEASE_FOR_SOLUTIONS ortam değişkenini, Visual Studio çözümünün parçası olan bir projede PackRelease kullanacak şekilde ayarlayabiliyordunuz.
Yeni davranış
.NET 8 SDK veya sonraki bir sürümle geliştiriyorsanız, dotnet packRelease projeler için varsayılan olarak yapılandırmayı 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, Debug yapılandırması açıkça belirtilmediği sürece (örneğin, dotnet pack --configuration Debug kullanarak...) 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ü hedefliyorsa ve farklı hedefler için farklı PackRelease değerleriniz varsa, bazı TFM'ler Release yapılandırmasını paketlerken diğerleri Debug yapılandırmasını paketleyebilir, bu durum bir çakışmaya neden olabilir.
Çözümdeki projeler için:
dotnet pack, bir çözüm dosyası verilirse visual studio çözümündeki tüm projeleri paketleyebilir. Eğer çözümdeki her proje içinPackReleasedeğeri tanımsız ise, değeri örtük olaraktrueolarak ayarlanır. Kullanılacak doğru yapılandırmayı belirlemek içindotnet packçözümdeki tüm projelerin değeriniPackReleasekabul etmesi gerekir.Bu değişiklik, özellikle çok sayıda proje içeren çözümler için,
dotnet pack'nin performansının gerileyebilmesine neden olabilir. Bu sorunu çözmek için yeni bir ortam değişkeniDOTNET_CLI_LAZY_PUBLISH_AND_PACK_RELEASE_FOR_SOLUTIONSkullanıma sunulmuştur.Ortam
DOTNET_CLI_ENABLE_PACK_RELEASE_FOR_SOLUTIONSdeğişkeni artık tanınmıyor.
Sürüm kullanıma sunulmuştur
.NET 8 Preview 1
Kesinti yaratan değişiklik 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_RELEASEtrue(veya başka bir değer) olarak ayarlayabilirsiniz. Bu değişken hemdotnet publish'ı hem dedotnet pack'i etkiler.Paketleme yapılandırmasını açıkça belirtmek için
Debug,-cile--configurationveyadotnet packseçeneğini kullanın.CI/CD işlem hattınız sabit kodlanmış çıkış yollarından dolayı bozuksa, yolları
ReleaseyerineDebugile güncelleyin,DOTNET_CLI_DISABLE_PUBLISH_AND_PACK_RELEASEortam değişkenini kullanarak yeni davranışı devre dışı bırakın veyaDebugyapılandırmanın kullanılması gerektiğini belirtin.Bir çözümü paketliyorsanız ve bir veya daha fazla projenin
PackReleaseiçin açıkça bir değer ayarlaması nedeniyle bu çözüm bozuksa, her projedePackReleasedeğerini açıkçafalseolarak ayarlamalısınız.<PropertyGroup> <PackRelease>false</PackRelease> </PropertyGroup>Bir çözüm topluyorsanız ve performans gerilediyse, regresyonu kaldırmak için
DOTNET_CLI_LAZY_PUBLISH_AND_PACK_RELEASE_FOR_SOLUTIONSortam değişkenini (veya başka bir değer) olarak ayarlayabilirsiniztrue. 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 hemdotnet publish'ı hem dedotnet pack'i etkiler.