'dotnet publish' menggunakan konfigurasi Rilis
Perintah dotnet publish
sekarang menggunakan Release
konfigurasi alih-alih Debug
konfigurasi secara default jika kerangka kerja target adalah .NET 8 atau versi yang lebih baru.
Perilaku sebelumnya
Sebelumnya, dotnet publish
gunakan Debug
konfigurasi kecuali konfigurasi ditentukan secara eksplisit atau PublishRelease
diatur ke true
.
Properti PublishRelease
ditambahkan dalam .NET 7 sebagai jalur yang diteruskan ke perubahan yang melanggar ini. Sebelumnya, Anda dapat mengatur DOTNET_CLI_ENABLE_PUBLISH_RELEASE_FOR_SOLUTIONS
variabel lingkungan untuk digunakan PublishRelease
dalam proyek yang merupakan bagian dari solusi Visual Studio.
Perilaku yang baru
Jika Anda mengembangkan dengan .NET 8 SDK atau versi yang lebih baru, dotnet publish
menggunakan Release
konfigurasi secara default untuk proyek yang TargetFramework
diatur ke net8.0
atau versi yang lebih baru. Jika Anda memiliki skrip CI/CD, pengujian, atau kode tempat Anda telah melakukan hardcod ke Debug
jalur output, perubahan ini dapat merusak alur kerja Anda.
Jika proyek Anda menargetkan beberapa versi, perilaku baru hanya berlaku jika Anda menentukan kerangka kerja target .NET 8 atau yang lebih baru saat Anda menerbitkan (misalnya, menggunakan dotnet publish -f net8.0
).
Untuk proyek dalam solusi:
dotnet publish
dapat menerbitkan semua proyek dalam solusi Visual Studio jika diberikan file solusi. Untuk proyek solusi yang menargetkan .NET 8 atau yang lebih baru, nilaiPublishRelease
diatur secara implisit ketrue
jika tidak ditentukan. Namun, untukdotnet publish
menentukan konfigurasi yang benar untuk digunakan untuk solusi, semua proyek dalam solusi harus menyetujui nilainya .PublishRelease
Jika proyek lama dalam solusi telahPublishRelease
diatur kefalse
, Anda harus secara eksplisit mengatur properti kefalse
untuk proyek .NET 8+ baru juga.Perubahan ini dapat menyebabkan performa
dotnet publish
ke regresi, terutama untuk solusi yang berisi banyak proyek. Untuk mengatasi hal ini, variabelDOTNET_CLI_LAZY_PUBLISH_AND_PACK_RELEASE_FOR_SOLUTIONS
lingkungan baru telah diperkenalkan.Variabel
DOTNET_CLI_ENABLE_PUBLISH_RELEASE_FOR_SOLUTIONS
lingkungan tidak lagi dikenali.
Versi yang diperkenalkan
Pratinjau .NET 8 1
Jenis perubahan yang melanggar
Perubahan ini dapat memengaruhi kompatibilitas sumber dan juga merupakan perubahan perilaku.
Alasan untuk berubah
Dalam kebanyakan kasus saat menerbitkan, Anda ingin kode Anda dioptimalkan dan dapat menjaga aplikasi lebih kecil dengan mengecualikan informasi penelusuran kesalahan. Pelanggan telah meminta untuk Release
menjadi konfigurasi default untuk publish
waktu yang lama. Selain itu, Visual Studio telah memiliki perilaku ini selama bertahun-tahun.
Variabel DOTNET_CLI_ENABLE_PUBLISH_RELEASE_FOR_SOLUTIONS
lingkungan dihapus karena perilaku yang diaktifkannya sekarang adalah perilaku default dan kontrol terperinci tidak lagi diperlukan.
Tindakan yang direkomendasikan
Untuk menonaktifkan perilaku baru sepenuhnya, Anda dapat mengatur
DOTNET_CLI_DISABLE_PUBLISH_AND_PACK_RELEASE
variabel lingkungan ketrue
(atau nilai lainnya). Variabel ini mempengaruhi dandotnet publish
dotnet pack
.Untuk secara eksplisit menentukan
Debug
konfigurasi untuk penerbitan, gunakan-c
opsi atau--configuration
dengandotnet publish
.Jika alur CI/CD Anda rusak karena jalur output yang dikodekan secara permanen, perbarui jalur ke
Release
alih-alihDebug
, nonaktifkan perilaku baru menggunakanDOTNET_CLI_DISABLE_PUBLISH_AND_PACK_RELEASE
variabel lingkungan, atau tentukan bahwaDebug
konfigurasi harus digunakan.Jika Anda menerbitkan solusi dan rusak, Anda dapat secara eksplisit mengatur
PublishRelease
ketrue
(ataufalse
untuk kembali ke perilaku sebelumnya).<PropertyGroup> <PublishRelease>true</PublishRelease> </PropertyGroup>
Atau, Anda dapat menentukan properti dalam file Directory.Build.Props . Namun, jika Anda mengaturnya
false
dalam file ini, Anda masih harus secara eksplisit mengatur properti kefalse
dalam proyek .NET 8+ dalam solusi. Demikian pula, jika beberapa proyek secara eksplisit menetapkan nilai yang berbeda dari nilai dalam file Directory.Build.Props , penerbitan akan gagal.Jika Anda menerbitkan solusi dan performa telah regresi, Anda dapat mengatur
DOTNET_CLI_LAZY_PUBLISH_AND_PACK_RELEASE_FOR_SOLUTIONS
variabel lingkungan ketrue
(atau nilai lainnya) untuk menghapus regresi. Namun, jika Anda mengatur variabel ini dan solusi Anda berisi proyek .NET 8+ dan proyek yang menargetkan .NET 7 atau yang lebih lama, penerbitan akan gagal sampai semua proyek menentukanPublishRelease
. Variabel ini mempengaruhi dandotnet publish
dotnet pack
.