'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, nilai PackRelease diatur secara implisit ke true jika tidak terdefinisi. Untuk dotnet 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, variabel DOTNET_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.

  • Untuk menonaktifkan perilaku baru sepenuhnya, Anda dapat mengatur DOTNET_CLI_DISABLE_PUBLISH_AND_PACK_RELEASE variabel lingkungan ke true (atau nilai lainnya). Variabel ini mempengaruhi dan dotnet publishdotnet pack.

  • Untuk secara eksplisit menentukan Debug konfigurasi untuk pengemasan, gunakan -c opsi atau --configuration dengan dotnet pack.

  • Jika alur CI/CD Anda rusak karena jalur output yang dikodekan secara permanen, perbarui jalur ke Release alih-alih Debug, nonaktifkan perilaku baru menggunakan DOTNET_CLI_DISABLE_PUBLISH_AND_PACK_RELEASE variabel lingkungan, atau tentukan bahwa Debug 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 diatur PackRelease ke false 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 ke true (atau nilai lainnya) untuk menghapus regresi. Jika Anda menggunakan variabel ini dan proyek apa pun mendefinisikan PackRelease, semua proyek harus menentukannya, atau Anda dapat menggunakan file Directory.Build.Props . Variabel ini mempengaruhi dan dotnet publishdotnet pack.

Lihat juga