Bagikan melalui


Roll runtime penyebaran mandiri diteruskan

Penyebaran aplikasi mandiri .NET Core mencakup pustaka .NET Core dan runtime .NET Core. Mulai dari .NET Core 2.1 SDK (versi 2.1.300), penyebaran aplikasi mandiri menerbitkan runtime patch tertinggi di komputer Anda. Secara default, dotnet publish untuk penyebaran mandiri memilih versi terbaru yang diinstal sebagai bagian dari SDK pada mesin penerbitan. Ini memungkinkan aplikasi yang Anda sebarkan untuk berjalan dengan perbaikan keamanan (dan perbaikan lainnya) yang tersedia selama publish. Aplikasi harus diterbitkan ulang untuk mendapatkan patch baru. Aplikasi mandiri dibuat dengan menentukan -r <RID> pada dotnet publish perintah atau dengan menentukan pengidentifikasi runtime (RID) dalam file proyek (csproj / vbproj) atau pada baris perintah.

Gambaran umum penerusan roll versi patch

restore, build dan publish adalah dotnet perintah yang dapat berjalan secara terpisah. Pilihan runtime adalah bagian restore dari operasi, bukan publish atau build. Jika Anda memanggil publish, versi patch terbaru akan dipilih. Jika Anda memanggil publish dengan --no-restore argumen , maka Anda mungkin tidak mendapatkan versi patch yang diinginkan karena sebelumnya restore mungkin belum dijalankan dengan kebijakan penerbitan aplikasi mandiri baru. Dalam hal ini, kesalahan build dihasilkan dengan teks yang mirip dengan yang berikut ini:

"Proyek dipulihkan menggunakan Microsoft.NETCore.App versi 2.0.0, tetapi dengan pengaturan saat ini, versi 2.0.6 akan digunakan sebagai gantinya. Untuk mengatasi masalah ini, pastikan pengaturan yang sama digunakan untuk memulihkan dan untuk operasi berikutnya seperti build atau publish. Biasanya masalah ini dapat terjadi jika properti RuntimeIdentifier diatur selama build atau publish, tetapi tidak selama pemulihan."

Catatan

restore dan build dapat dijalankan secara implisit sebagai bagian dari perintah lain, seperti publish. Ketika dijalankan secara implisit sebagai bagian dari perintah lain, mereka disediakan dengan konteks tambahan sehingga artefak yang tepat diproduksi. Saat Anda publish dengan runtime (misalnya, dotnet publish -r linux-x64), implisit restore memulihkan paket untuk runtime linux-x64. Jika Anda memanggil restore secara eksplisit, paket runtime tidak dipulihkan secara default, karena tidak memiliki konteks tersebut.

Cara menghindari pemulihan selama penerbitan

Menjalankan restore sebagai bagian publish dari operasi mungkin tidak diinginkan untuk skenario Anda. Untuk menghindari restore selama publish membuat aplikasi mandiri, lakukan hal berikut:

  • Atur RuntimeIdentifiers properti ke daftar yang dipisahkan titik koma dari semua RID yang akan diterbitkan.
  • Atur properti TargetLatestRuntimePatch ke true.

Argumen tanpa pemulihan dengan opsi penerbitan dotnet

Jika Anda ingin membuat aplikasi mandiri dan aplikasi yang bergantung pada kerangka kerja dengan file proyek yang sama, dan Anda ingin menggunakan --no-restore argumen dengan dotnet publish, maka pilih salah satu hal berikut:

  1. Lebih suka perilaku yang bergantung pada kerangka kerja. Jika aplikasi bergantung pada kerangka kerja, ini adalah perilaku default. Jika aplikasi mandiri, dan dapat menggunakan runtime lokal 2.1.0 yang belum dikirim, atur TargetLatestRuntimePatch ke false dalam file proyek.

  2. Lebih suka perilaku mandiri. Jika aplikasi mandiri, ini adalah perilaku default. Jika aplikasi bergantung pada kerangka kerja, dan memerlukan patch terbaru yang diinstal, atur TargetLatestRuntimePatch ke true dalam file proyek.

  3. Ambil kontrol eksplisit dari versi kerangka kerja runtime dengan mengatur RuntimeFrameworkVersion ke versi patch tertentu dalam file proyek.