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.
Varsayılan olarak, hedef çerçeve .NET 8 veya sonraki bir sürümse, dotnet publish komutuRelease yapılandırması yerine Debug yapılandırmasını kullanır.
Önceki davranış
Daha önce, dotnet publish, Debug yapılandırması kullanılmadıkça veya yapılandırma açıkça belirtilmediği sürece PublishRelease yapılandırmasını kullanıyordu.
özelliğiPublishRelease bu köklü değişikliğe yönelik bir çözüm olarak .NET 7'ye eklendi. Daha önce, DOTNET_CLI_ENABLE_PUBLISH_RELEASE_FOR_SOLUTIONS ortam değişkenini, Visual Studio çözümünün parçası olan bir projede PublishRelease kullanacak şekilde ayarlayabiliyordunuz.
Yeni davranış
.NET 8 SDK veya daha sonraki bir sürümüyle geliştiriyorsanız, dotnet publishRelease veya daha sonraki bir sürüme ayarlanmış projeler için TargetFramework yapılandırmasını varsayılan olarak net8.0 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.
Projeniz birden çok sürümü hedef alıyorsa, yeni davranış yalnızca yayımladığınızda .NET 8 veya üzeri bir hedef çerçeve belirtirseniz (örneğin, kullanarak dotnet publish -f net8.0) uygulanır.
Çözümdeki projeler için:
dotnet publishbir çözüm dosyası verilirse visual studio çözümündeki tüm projeleri yayımlayabilir. .NET 8 veya daha sonraki sürümleri hedefleyen çözüm projeleri için,PublishReleasedeğeri tanımlanmamışsa, örtük olaraktrueolarak ayarlanır. Ancak,dotnet publishçözüm için kullanılacak doğru yapılandırmayı belirlemek için çözümdeki tüm projelerin değeriPublishReleaseüzerinde anlaşmaya varması gerekir. ÇözümdekiPublishReleaseeski bir projefalseayarlandıysa, yeni .NET 8+ projeleri için de özelliği açıkçafalseayarlamanız gerekir.Bu değişiklik, özellikle çok sayıda proje içeren çözümler için,
dotnet publish'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_PUBLISH_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 yayımladığınızda kodunuzun iyileştirilmiş olmasını ve hata ayıklama bilgilerini dışlayarak uygulamayı daha küçük tutmanızı istersiniz. Müşteriler uzun süredir Release için varsayılan yapılandırma olarak publish'ın olmasını istiyor. Ayrıca, Visual Studio uzun yıllardır bu davranışa sahiptir.
Etkinleştirildiği DOTNET_CLI_ENABLE_PUBLISH_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.Yayımlama yapılandırmasını açıkça belirtmek için
Debugkullanın ya da-cveya--configurationseçeneği iledotnet publishkullanı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 yayımlıyorsanız ve çözüm hatalıysa,
PublishReleaseöğesini açıkça olaraktrueöğesine ayarlayabilirsiniz (veya önceki davranışa geri dönmek içinfalseöğesine ayarlayabilirsiniz).<PropertyGroup> <PublishRelease>true</PublishRelease> </PropertyGroup>Alternatif olarak, özelliğini bir Directory.Build.Props dosyasında belirtebilirsiniz. Ancak, bu dosyada
falseözelliğini ayarlarsanız, çözümdeki .NET 8+ projelerinde de özelliğifalseolarak açıkça ayarlamanız gerekir. Benzer şekilde, bazı projeler açıkça Directory.Build.Props dosyasındaki değerden farklı bir değer ayarlarsa yayımlama başarısız olur.Bir çözüm yayımlıyorsanı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. Ancak, bu değişkeni ayarlarsanız ve çözümünüz bir .NET 8+ projesi ve .NET 7 veya önceki sürümleri hedefleyen bir proje içeriyorsa, tüm projeler tanımlayanaPublishReleasekadar yayımlama başarısız olur. Bu değişken hemdotnet publish'ı hem dedotnet pack'i etkiler.