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.
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.
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
ketrue
.
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:
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
kefalse
dalam file proyek.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
ketrue
dalam file proyek.Ambil kontrol eksplisit dari versi kerangka kerja runtime dengan mengatur
RuntimeFrameworkVersion
ke versi patch tertentu dalam file proyek.
Umpan balik .NET
.NET adalah proyek sumber terbuka. Pilih tautan untuk memberikan umpan balik: