'dotnet pack' menggunakan konfigurasi Rilis
Perintahdotnet pack
, yang mengemas kode ke dalam paket NuGet, sekarang menggunakan Release
konfigurasi alih-alih Debug
konfigurasi secara default.
Perilaku sebelumnya
Sebelumnya, dotnet pack
gunakan Debug
konfigurasi kecuali konfigurasi ditentukan secara eksplisit atau PackRelease
diatur ke true
.
Properti PackRelease
ditambahkan dalam .NET 7 sebagai jalur yang diteruskan ke perubahan yang melanggar ini. Sebelumnya, Anda dapat mengatur DOTNET_CLI_ENABLE_PACK_RELEASE_FOR_SOLUTIONS
variabel lingkungan untuk digunakan PackRelease
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 pack
gunakan Release
konfigurasi secara default untuk semua proyek. 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. Selain itu, Anda tidak akan dapat men-debug aplikasi yang dikemas kecuali Debug
konfigurasi ditentukan secara eksplisit (misalnya, menggunakan dotnet pack --configuration Debug
.
dotnet pack
dapat mengemas beberapa moniker kerangka kerja target (TFM) secara bersamaan. Jika proyek Anda menargetkan beberapa versi dan Anda memiliki nilai yang berbeda PackRelease
untuk target yang berbeda, Anda dapat mengalami konflik di mana beberapa TFM mengemas Release
konfigurasi dan yang lain mengemas Debug
konfigurasi.
Untuk proyek dalam solusi:
dotnet pack
dapat mengemas semua proyek dalam solusi Visual Studio jika diberikan file solusi. Untuk setiap proyek dalam solusi, nilaiPackRelease
diatur secara implisit ketrue
jika tidak terdefinisi. Untukdotnet pack
menentukan konfigurasi yang benar untuk digunakan, semua proyek dalam solusi harus menyetujui nilainya .PackRelease
Perubahan ini dapat menyebabkan performa
dotnet pack
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_PACK_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 ketika Anda membuat paket, Anda ingin kode Anda dioptimalkan dan dapat menjaga paket lebih kecil dengan mengecualikan informasi penelusuran kesalahan.
Variabel DOTNET_CLI_ENABLE_PACK_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 pengemasan, gunakan-c
opsi atau--configuration
dengandotnet pack
.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 mengemas solusi dan itu rusak karena satu atau beberapa proyek secara eksplisit menetapkan nilai untuk
PackRelease
, Anda harus secara eksplisit diaturPackRelease
kefalse
di setiap proyek:<PropertyGroup> <PackRelease>false</PackRelease> </PropertyGroup>
Jika Anda mengemas 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. Jika Anda menggunakan variabel ini dan proyek apa pun mendefinisikanPackRelease
, semua proyek harus menentukannya, atau Anda dapat menggunakan file Directory.Build.Props . Variabel ini mempengaruhi dandotnet publish
dotnet pack
.