Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Artikel ini menjelaskan berbagai cara untuk menerbitkan aplikasi .NET. Ini mencakup mode penerbitan, cara menghasilkan file yang dapat dieksekusi dan biner lintas platform, serta dampak dari setiap pendekatan terhadap lingkungan penyebaran dan lingkungan waktu proses. Anda dapat menerbitkan aplikasi .NET menggunakan CLI .NET atau Visual Studio.
Untuk tutorial singkat tentang penerbitan, lihat Tutorial: Menerbitkan aplikasi konsol .NET.
Untuk tutorial singkat tentang penerbitan, lihat Tutorial: Menerbitkan aplikasi konsol .NET.
Apa itu penerbitan
Menerbitkan aplikasi .NET berarti mengkompilasi kode sumber untuk membuat executable atau biner, bersama dengan dependensi dan file terkaitnya, untuk distribusi. Setelah menerbitkan, Anda menyebarkan aplikasi ke server, platform distribusi, kontainer, atau lingkungan cloud. Proses penerbitan menyiapkan aplikasi untuk penyebaran dan digunakan di luar lingkungan pengembangan.
Mode penerbitan
Ada dua cara utama untuk menerbitkan aplikasi. Beberapa faktor yang memengaruhi keputusan ini termasuk apakah lingkungan penyebaran memiliki .NET Runtime yang sesuai yang diinstal dan apakah Anda memerlukan fitur kompilasi tertentu yang memerlukan bundling runtime dengan aplikasi Anda. Dua mode penerbitan adalah:
Menerbitkan mandiri
Mode ini menghasilkan folder penerbitan yang mencakup executable khusus platform yang digunakan untuk memulai aplikasi, biner terkompilasi yang berisi kode aplikasi, dependensi aplikasi apa pun, dan runtime .NET yang diperlukan untuk menjalankan aplikasi. Lingkungan yang menjalankan aplikasi tidak perlu memiliki runtime .NET yang telah diinstal sebelumnya.Menerbitkan tergantung kerangka kerja
Mode ini menghasilkan folder penerbitan yang menyertakan executable khusus platform opsional yang digunakan untuk memulai aplikasi, biner yang dikompilasi yang berisi kode aplikasi, dan dependensi aplikasi apa pun. Lingkungan yang menjalankan aplikasi harus memiliki versi runtime .NET yang dapat digunakan aplikasi.
Penting
Anda menentukan target platform menggunakan pengidentifikasi runtime (RID). Untuk informasi selengkapnya tentang RID, lihat .NET RID Catalog.
Dasar-dasar penerbitan
Pengaturan file proyek menentukan kerangka kerja target default saat Anda menerbitkan aplikasi Anda. Anda dapat mengubah kerangka kerja target menjadi Moniker Kerangka Kerja Target (TFM) yang valid. Misalnya, jika proyek Anda menggunakan <TargetFramework>net9.0</TargetFramework>, biner yang menargetkan .NET 9 dibuat.
Jika Anda ingin menargetkan lebih dari satu kerangka kerja, Anda dapat mengatur pengaturan ke beberapa nilai TFM, dipisahkan oleh titik koma. Saat Anda membuat aplikasi, aplikasi Anda dibuat untuk setiap kerangka kerja target yang ditentukan oleh proyek Anda. Namun, saat memublikasikan aplikasi, Anda harus menentukan kerangka kerja target:
Mode konfigurasi build default adalah Rilis, kecuali diubah dengan parameter .
dotnet publish -c Release -f net9.0
Direktori output default perintah adalah . Misalnya, mempublikasikan ke . Namun, Anda dapat memilih jalur output dan struktur folder yang disederhanakan untuk semua output build. Untuk informasi selengkapnya, lihat Tata letak output Artefak.
Di Visual Studio, buat profil penerbitan terpisah untuk setiap kerangka kerja target.
Biner portabel
Saat memublikasikan aplikasi .NET, Anda dapat menargetkan platform tertentu atau membuat biner portabel. Secara default, bahkan saat membuat biner portabel, .NET menerbitkan executable khusus platform ("apphost") bersama DLL portabel kecuali Anda secara eksplisit menonaktifkan perilaku ini.
Executable khusus platform dibuat karena properti , yang secara default adalah . Untuk menerbitkan DLL portabel saja tanpa executable khusus platform, atur ke pada baris perintah () atau sebagai properti proyek.
Manfaat menargetkan platform tertentu adalah dapat menangani dependensi asli yang mungkin diperlukan aplikasi Anda, memastikan kompatibilitas dengan persyaratan spesifik platform target.
Dependensi asli
Jika aplikasi Anda memiliki dependensi asli, aplikasi mungkin tidak berjalan pada sistem operasi yang berbeda jika diterbitkan sebagai biner portabel. Misalnya, aplikasi yang bergantung pada API Windows tidak berjalan secara asli di macOS atau Linux. Anda harus menyediakan kode khusus platform dan mengkompilasi executable untuk setiap platform.
Pertimbangkan juga, jika pustaka yang Anda referensikan menyediakan dependensi khusus platform, aplikasi Anda mungkin tidak berjalan di setiap platform. Namun, ketika Anda melakukan publikasi dan menargetkan platform tertentu, dependensi khusus platform dari paket NuGet disalin ke folder publikasi.
Untuk memastikan bahwa aplikasi Anda diterbitkan dengan dependensi aslinya, terbitkan untuk platform tertentu:
dotnet publish -c Release -r <RID>
-c ReleaseTombol ini mengatur konfigurasi build ke Rilis, yang dioptimalkan untuk penerapan produksi.
-r <RID>Pengalih ini menggunakan pengidentifikasi runtime (RID) untuk menentukan platform target dan memastikan dependensi asli sudah disertakan (jika diperlukan). Untuk daftar pengidentifikasi runtime, lihat Katalog Pengidentifikasi Runtime (RID).
- Klik kanan proyek di Penjelajah Solusi dan pilih Publish.
- Jika ini pertama kalinya Anda menerbitkan, pilih Folder sebagai target penerbitan dan pilih Berikutnya.
- Pilih lokasi folder atau terima default, lalu pilih Selesai.
- Di profil publikasi, pilih Perlihatkan semua pengaturan.
- Atur Target Runtime ke platform yang Anda inginkan (misalnya, win-x64 untuk Windows 64-bit).
- Pilih Simpan lalu Terbitkan.
Untuk daftar pengidentifikasi runtime, lihat Katalog Pengidentifikasi Runtime (RID).
Referensi cepat
Tabel berikut ini menyediakan contoh cepat tentang cara menerbitkan aplikasi Anda.
| Mode Terbitkan | Perintah |
|---|---|
| Penyebaran yang bergantung pada kerangka kerja | dotnet publish -c Release [-r <RID>] |
| Penyebaran yang bergantung pada kerangka kerja (DLL) | dotnet publish -c Release -p:UseAppHost=false |
| Penyebaran mandiri | dotnet publish -c Release [-r <RID>] --self-contained true |
| Penyebaran file tunggal | dotnet publish -c Release [-r <RID>] -p:PublishSingleFile=true |
| Penyebaran Native AOT | dotnet publish -c Release [-r <RID>] -p:PublishAot=true |
| Penyebaran ReadyToRun | dotnet publish -c Release [-r <RID>] -p:PublishReadyToRun=true |
| Penyebaran kontainer | dotnet publish -c Release [-r <RID>] -t:PublishContainer |
Penyebaran yang bergantung pada kerangka kerja
Penyebaran yang bergantung pada kerangka kerja adalah mode default saat Anda menerbitkan dari CLI atau Visual Studio. Dalam mode ini, executable khusus platform dibuat yang dapat digunakan untuk memulai aplikasi Anda. Executable khusus platform diberi nama sesuatu yang mirip dengan myapp.exe di Windows atau hanya myapp di platform lain.
Aplikasi Anda dikonfigurasi untuk menargetkan versi .NET tertentu. Runtime .NET yang ditargetkan harus berada di lingkungan tempat aplikasi Anda berjalan. Misalnya, jika aplikasi Anda menargetkan .NET 9, lingkungan apa pun yang dijalankan aplikasi Anda harus menginstal runtime .NET 9.
Menerbitkan penyebaran yang bergantung pada kerangka kerja membuat aplikasi yang secara otomatis diteruskan ke patch keamanan .NET terbaru yang tersedia di lingkungan yang menjalankan aplikasi. Untuk informasi selengkapnya tentang pengikatan versi pada waktu kompilasi, lihat Pilih versi .NET yang akan digunakan.
Keuntungan
- Penyebaran kecil: Hanya aplikasi dan dependensinya yang didistribusikan. Lingkungan tempat aplikasi dijalankan harus sudah menginstal runtime .NET.
- Cross-platform: Aplikasi dan pustaka berbasis .NET berjalan pada sistem operasi lainnya.
- Menggunakan runtime patch terbaru: Aplikasi menggunakan runtime terbaru yang diinstal di lingkungan.
Kerugian
- Requires telah menginstal runtime: Aplikasi hanya dapat berjalan jika versi .NET targetnya sudah diinstal di lingkungan.
- .NET mungkin berubah: Lingkungan tempat aplikasi dijalankan mungkin menggunakan runtime .NET yang lebih baru, yang dapat mengubah perilaku aplikasi.
Meluncurkan aplikasi yang bergantung pada kerangka kerja
Ada dua cara untuk menjalankan aplikasi yang bergantung pada kerangka kerja: melalui executable khusus platform ("apphost") dan melalui . Anda dapat menjalankan apphost yang dapat dieksekusi secara langsung alih-alih memanggil , yang masih merupakan cara yang dapat diterima untuk menjalankan aplikasi. Jika memungkinkan, disarankan untuk menggunakan apphost. Ada sejumlah keuntungan menggunakan apphost:
- Executable muncul seperti executable platform asli standar.
- Nama yang dapat dieksekusi dipertahankan dalam nama proses, yang berarti aplikasi dapat dengan mudah dikenali berdasarkan namanya.
- Karena apphost adalah biner asli, aset asli seperti manifes dapat melekat padanya.
- Apphost telah menyediakan mitigasi keamanan tingkat rendah yang diterapkan secara default yang membuatnya lebih aman. Misalnya, shadow stack dalam Control-flow Enforcement Technology (CET) diaktifkan secara default mulai dari .NET 9. Mitigasi yang diterapkan pada merupakan titik kesamaan terendah dari semua runtime yang didukung.
Terbitkan
dotnet publish -c Release [-r <RID>]
-c ReleaseTombol ini mengatur konfigurasi build ke Rilis, yang dioptimalkan untuk penerapan produksi.
-r <RID>Pengalih ini menggunakan pengidentifikasi runtime (RID) untuk menentukan platform target dan memastikan dependensi asli sudah disertakan (jika diperlukan). Untuk daftar pengidentifikasi runtime, lihat Katalog Pengidentifikasi Runtime (RID).
Atau secara eksplisit:
dotnet publish -c Release [-r <RID>] --self-contained false
--self-contained falseSwitch ini secara eksplisit memberi tahu .NET SDK untuk membuat penyebaran yang bergantung pada framework.
- Klik kanan proyek di Penjelajah Solusi dan pilih Publish.
- Jika ini pertama kalinya Anda menerbitkan, pilih Folder sebagai target penerbitan dan pilih Berikutnya.
- Pilih lokasi folder atau terima default, lalu pilih Selesai.
- Di profil publikasi, pilih Perlihatkan semua pengaturan.
- Atur Mode Penyebaran ke Dependen Kerangka Kerja (ini adalah default).
- Atur Target Runtime ke platform yang Anda inginkan (misalnya, win-x64 untuk Windows 64-bit).
- Pilih Simpan lalu Terbitkan.
Mengonfigurasi perilaku pencarian instalasi .NET
Secara default, apphost menemukan dan menggunakan runtime .NET yang diinstal secara global, dengan lokasi penginstalan bervariasi menurut platform. Untuk informasi selengkapnya tentang identifikasi runtime dan lokasi penginstalan, lihat Memecahkan masalah gagal membuka aplikasi.
Jalur runtime .NET juga dapat disesuaikan berdasarkan setiap eksekusi. Variabel lingkungan dapat digunakan untuk menunjuk ke lokasi kustom. Untuk informasi selengkapnya tentang semua opsi konfigurasi DOTNET_ROOT, lihat variabel lingkungan .NET.
Secara umum, praktik terbaik untuk menggunakan adalah:
- Bersihkan variabel lingkungan terlebih dahulu, yang berarti semua variabel lingkungan yang dimulai dengan teks .
- Atur , dan hanya , ke jalur target.
- Jalankan target apphost.
Dalam versi .NET 9 dan yang lebih baru, Anda dapat mengonfigurasi jalur pencarian penginstalan .NET untuk file eksekusi yang diterbitkan melalui properti AppHostDotNetSearch dan AppHostRelativeDotNet.
AppHostDotNetSearch memungkinkan penentuan satu atau beberapa lokasi di mana program eksekusi akan mencari penginstalan .NET:
- : folder aplikasi yang dapat dieksekusi
- : jalur relatif terhadap aplikasi yang dapat dieksekusi
- : nilai variabel lingkungan
- : lokasi penginstalan global terdaftar dan default
menentukan jalur relatif terhadap executable yang akan dicari saat berisi .
Untuk informasi selengkapnya, lihat , , dan opsi lokasi instal di apphost.
Penyebaran DLL lintas platform
Atau, Anda dapat memublikasikan aplikasi sebagai DLL lintas platform tanpa executable khusus platform. Dalam mode ini, file dibuat di folder output publikasi. Untuk menjalankan aplikasi Anda, navigasikan ke folder output dan gunakan perintah .
Untuk menerbitkan sebagai DLL lintas platform:
dotnet publish -c Release -p:UseAppHost=false
-c ReleaseTombol ini mengatur konfigurasi build ke Rilis, yang dioptimalkan untuk penerapan produksi.
-p:UseAppHost=falseProperti ini menonaktifkan pembuatan executable khusus platform, hanya menghasilkan DLL portabel.
- Klik kanan proyek di Penjelajah Solusi dan pilih Publish.
- Jika ini pertama kalinya Anda menerbitkan, pilih Folder sebagai target penerbitan dan pilih Berikutnya.
- Pilih lokasi folder atau terima default, lalu pilih Selesai.
- Di profil publikasi, pilih Perlihatkan semua pengaturan.
- Atur Mode Penyebaran ke Dependen Kerangka Kerja.
- Hapus centang Buat file tunggal.
- Atur Runtime Target ke Portabel (atau biarkan kosong).
- Pilih Simpan lalu Terbitkan.
Penyebaran mandiri
Saat Anda menerbitkan penyebaran mandiri (SCD), proses penerbitan membuat executable yang sesuai dengan platform tertentu. Menerbitkan SCD menyertakan semua file .NET yang diperlukan untuk menjalankan aplikasi Anda tetapi tidak menyertakan dependensi asli .NET. Dependensi ini harus ada di lingkungan sebelum aplikasi berjalan.
Menerbitkan SCD membuat aplikasi yang tidak diteruskan ke patch keamanan .NET terbaru yang tersedia. Untuk informasi selengkapnya tentang pengikatan versi pada waktu kompilasi, lihat Pilih versi .NET yang akan digunakan.
Keuntungan
- Control versi .NET: Mengontrol versi .NET mana yang disebarkan dengan aplikasi.
- Penargetan khusus platform: Karena aplikasi harus diterbitkan untuk setiap platform, jelas tempat aplikasi berjalan.
Kerugian
- Penyebaran yang lebih besar: Karena aplikasi menyertakan runtime .NET dan semua dependensi, ukuran unduhan dan ruang hard drive yang diperlukan lebih besar dari penyebaran berbasis framework.
- Lebih sulit memperbarui versi .NET: Framework .NET hanya dapat ditingkatkan dengan merilis versi baru dari aplikasi.
Saran
Anda dapat mengurangi ukuran total aplikasi mandiri yang kompatibel dengan menerbitkannya dalam bentuk yang telah dipangkas atau dengan mengaktifkan mode invarian globalisasi. Untuk informasi selengkapnya tentang mode invarian globalisasi, lihat .NET Globalization Invariant Mode.
Terbitkan
dotnet publish -c Release -r <RID> --self-contained true
-c ReleaseTombol ini mengatur konfigurasi build ke Rilis, yang dioptimalkan untuk penerapan produksi.
-r <RID>Pengalih ini menggunakan pengidentifikasi runtime (RID) untuk menentukan platform target dan memastikan dependensi asli sudah disertakan (jika diperlukan). Untuk daftar pengidentifikasi runtime, lihat Katalog Pengidentifikasi Runtime (RID).
--self-contained trueSakelar ini memberi tahu .NET SDK untuk membuat file eksekusi sebagai aplikasi mandiri (SCD).
- Klik kanan proyek di Penjelajah Solusi dan pilih Publish.
- Jika ini pertama kalinya Anda menerbitkan, pilih Folder sebagai target penerbitan dan pilih Berikutnya.
- Pilih lokasi folder atau terima default, lalu pilih Selesai.
- Di profil publikasi, pilih Perlihatkan semua pengaturan.
- Atur Mode Penyebaran ke Mandiri.
- Atur Target Runtime ke platform yang Anda inginkan (misalnya, win-x64 untuk Windows 64-bit).
- Pilih Simpan lalu Terbitkan.
Penyebaran file tunggal
Saat Anda menerbitkan aplikasi sebagai penyebaran file tunggal, semua file yang bergantung pada aplikasi dibundel ke dalam satu biner. Model penyebaran ini tersedia untuk aplikasi yang bergantung pada kerangka kerja dan mandiri, menyediakan opsi menarik untuk menyebarkan dan mendistribusikan aplikasi Anda sebagai satu file.
Aplikasi single-file selalu spesifik terhadap OS dan arsitektur. Anda perlu menerbitkan untuk setiap konfigurasi, seperti Linux x64, Linux Arm64, Windows x64, dan sebagainya.
Keuntungan
- Distribusi yang disederhanakan: Menyebarkan dan mendistribusikan aplikasi Anda sebagai satu file yang dapat dieksekusi.
- Berkurangnya kekacauan file: Semua dependensi dibundel, menghilangkan kebutuhan untuk mengelola beberapa file.
- Penyebaran mudah: Salin satu file untuk menyebarkan aplikasi.
Kerugian
- Ukuran file yang lebih besar: File tunggal mencakup semua dependensi, membuatnya lebih besar dari file individual.
- Startup yang lebih lambat: File harus diekstrak pada runtime, yang dapat memengaruhi performa startup.
- Khusus platform: Harus menerbitkan file terpisah untuk setiap platform target.
Penyebaran file tunggal dapat dikombinasikan dengan pengoptimalan lain seperti pemangkasan dan kompilasi ReadyToRun untuk pengoptimalan lebih lanjut.
Untuk informasi selengkapnya tentang penyebaran file tunggal, lihat Penyebaran file tunggal.
Terbitkan
dotnet publish -c Release -r <RID> -p:PublishSingleFile=true
-c ReleaseTombol ini mengatur konfigurasi build ke Rilis, yang dioptimalkan untuk penerapan produksi.
-r <RID>Pengalih ini menggunakan pengidentifikasi runtime (RID) untuk menentukan platform target dan memastikan dependensi asli sudah disertakan (jika diperlukan). Untuk daftar pengidentifikasi runtime, lihat Katalog Pengidentifikasi Runtime (RID).
-p:PublishSingleFile=trueProperti ini menggabungkan semua file yang bergantung pada aplikasi ke dalam satu biner.
- Klik kanan proyek di Penjelajah Solusi dan pilih Publish.
- Jika ini pertama kalinya Anda menerbitkan, pilih Folder sebagai target penerbitan dan pilih Berikutnya.
- Pilih lokasi folder atau terima default, lalu pilih Selesai.
- Di profil publikasi, pilih Perlihatkan semua pengaturan.
- Atur Mode Penyebaran ke Mandiri atau Bergantung kerangka kerja.
- Atur Target Runtime ke platform yang Anda inginkan (misalnya, win-x64 untuk Windows 64-bit).
- Centang Hasilkan file tunggal.
- Pilih Simpan lalu Terbitkan.
Penyebaran AOT bawaan
Penyebaran AOT asli mengkompilasi aplikasi Anda langsung ke kode asli, menghilangkan kebutuhan akan runtime. Opsi penerbitan ini menggunakan mode penyebaran mandiri , karena kode asli yang dikompilasi harus menyertakan semua yang diperlukan untuk menjalankan aplikasi. Ini menghasilkan waktu startup yang lebih cepat dan mengurangi penggunaan memori, tetapi dilengkapi dengan beberapa batasan pada fitur yang didukung.
Keuntungan
- Startup cepat: Tidak ada kompilasi JIT yang diperlukan saat runtime, yang mengarah ke startup aplikasi yang lebih cepat.
- Penggunaan memori berkurang: Penggunaan memori yang lebih rendah dibandingkan dengan aplikasi .NET tradisional.
- Tidak ada dependensi runtime: Aplikasi berjalan tanpa memerlukan penginstalan runtime .NET.
- Ukuran penyebaran yang lebih kecil: Seringkali lebih kecil dari penyebaran mandiri dengan runtime penuh.
Kerugian
- Dukungan kerangka kerja terbatas: Tidak semua fitur dan pustaka .NET kompatibel dengan AOT Asli.
- Waktu build yang lebih lama: Kompilasi ke kode asli membutuhkan waktu lebih lama daripada build reguler.
- Khusus platform: Harus dikompilasi secara terpisah untuk setiap platform dan arsitektur target.
- Batasan .NET: Pengalaman debugging yang lebih kompleks dibandingkan dengan aplikasi .NET reguler.
Untuk informasi selengkapnya tentang penyebaran AOT Asli, lihat Penyebaran AOT asli.
Terbitkan
dotnet publish -c Release -r <RID> -p:PublishAot=true
-c ReleaseTombol ini mengatur konfigurasi build ke Rilis, yang dioptimalkan untuk penerapan produksi.
-r <RID>Pengalih ini menggunakan pengidentifikasi runtime (RID) untuk menentukan platform target dan memastikan dependensi asli sudah disertakan (jika diperlukan). Untuk daftar pengidentifikasi runtime, lihat Katalog Pengidentifikasi Runtime (RID).
-p:PublishAot=trueProperti ini memungkinkan kompilasi AOT Asli, yang mengkompilasi aplikasi langsung ke kode asli.
Penerbitan Native AOT harus dikonfigurasi dalam file proyek. Anda tidak dapat mengaktifkannya melalui antarmuka pengguna penerbitan Visual Studio.
Di Penjelajah Solusi, klik kanan proyek Anda dan pilih Edit File Proyek.
Tambahkan properti berikut ke :
<PublishAot>true</PublishAot>Simpan file proyek.
Klik kanan proyek di Penjelajah Solusi dan pilih Publish.
Jika ini pertama kalinya Anda menerbitkan, pilih Folder sebagai target penerbitan dan pilih Berikutnya.
Pilih lokasi folder atau terima default, lalu pilih Selesai.
Di profil publikasi, pilih Perlihatkan semua pengaturan.
Atur Mode Penyebaran ke Mandiri.
Atur Target Runtime ke platform yang Anda inginkan (misalnya, win-x64 untuk Windows 64-bit).
Pilih Simpan lalu Terbitkan.
Untuk informasi selengkapnya tentang penyebaran AOT Asli, lihat Penyebaran AOT asli.
Penyebaran ReadyToRun
Saat Anda memublikasikan aplikasi dengan kompilasi ReadyToRun, rakitan aplikasi Anda dikompilasi sebagai format ReadyToRun (R2R). R2R adalah bentuk kompilasi ahead-of-time (AOT) yang meningkatkan performa startup dengan mengurangi jumlah pekerjaan yang perlu dilakukan kompiler just-in-time (JIT) sesuai beban aplikasi Anda. Opsi penerbitan ini dapat digunakan dengan mode penyebaran yang bergantung pada kerangka kerja dan mandiri .
Biner ReadyToRun berisi kode bahasa perantara (IL) dan versi asli dari kode yang sama. Meskipun biner R2R lebih besar dari rakitan biasa, biner R2R memberikan performa startup yang lebih baik.
Keuntungan
- Waktu mulai yang ditingkatkan: Aplikasi menghabiskan lebih sedikit waktu untuk menjalankan pengkompilasi JIT selama startup.
- Performa penggunaan pertama yang lebih baik: Mengurangi latensi untuk eksekusi pertama kali jalur kode.
- Kompatibel dengan kode yang ada: Bekerja dengan sebagian besar pustaka dan kerangka kerja .NET tanpa modifikasi.
- Penyebaran fleksibel: Dapat dikombinasikan dengan penyebaran yang bergantung pada kerangka kerja dan mode penyebaran mandiri .
Kerugian
- Ukuran yang lebih besar: Aplikasi ini lebih besar pada disk karena menyertakan IL dan kode asli.
- Waktu build yang lebih lama: Kompilasi membutuhkan lebih banyak waktu daripada penerbitan standar.
- Pengoptimalan khusus platform: Perolehan performa terbaik memerlukan penargetan platform tertentu.
Terbitkan
dotnet publish -c Release -r <RID> -p:PublishReadyToRun=true
-c ReleaseTombol ini mengatur konfigurasi build ke Rilis, yang dioptimalkan untuk penerapan produksi.
-r <RID>Pengalih ini menggunakan pengidentifikasi runtime (RID) untuk menentukan platform target dan memastikan dependensi asli sudah disertakan (jika diperlukan). Untuk daftar pengidentifikasi runtime, lihat Katalog Pengidentifikasi Runtime (RID).
-p:PublishReadyToRun=trueProperti ini memungkinkan kompilasi ReadyToRun, yang meningkatkan performa startup dengan mengkompilasi rakitan terlebih dahulu.
- Klik kanan proyek di Penjelajah Solusi dan pilih Publish.
- Jika ini pertama kalinya Anda menerbitkan, pilih Folder sebagai target penerbitan dan pilih Berikutnya.
- Pilih lokasi folder atau terima default, lalu pilih Selesai.
- Di profil publikasi, pilih Perlihatkan semua pengaturan.
- Atur Mode Penyebaran ke Mandiri atau Bergantung kerangka kerja.
- Atur Target Runtime ke platform yang Anda inginkan (misalnya, win-x64 untuk Windows 64-bit).
- Centang Aktifkan kompilasi ReadyToRun.
- Pilih Simpan lalu Terbitkan.
Untuk informasi selengkapnya tentang penyebaran ReadyToRun, lihat Kompilasi ReadyToRun.
Penyebaran kontainer
Saat Anda menerbitkan aplikasi sebagai kontainer, SDK .NET mengemas aplikasi Anda dan dependensinya ke dalam gambar kontainer tanpa memerlukan Dockerfile terpisah. Mode penyebaran ini membuat gambar kontainer lengkap yang dapat dijalankan pada runtime kontainer apa pun, seperti Docker atau Podman. Penyebaran kontainer menyederhanakan proses kontainerisasi dengan menghilangkan kebutuhan untuk menulis dan memelihara Dockerfiles sambil menyediakan gambar dasar yang dioptimalkan.
Dimulai dengan .NET SDK 8.0.200, dukungan kontainer disertakan secara default dan tidak memerlukan paket NuGet tambahan. Untuk aplikasi konsol, Anda mungkin perlu mengaktifkan dukungan kontainer secara eksplisit dengan mengatur properti ke .
Saran
Untuk informasi selengkapnya tentang pengaturan proyek yang terkait dengan kontainer, lihat Kontainerisasi referensi aplikasi .NET.
Keuntungan
- Kontainerisasi yang disederhanakan: Tidak perlu menulis atau memelihara Dockerfiles untuk skenario dasar.
- Gambar dasar yang dioptimalkan: Menggunakan gambar dasar yang disediakan Microsoft dan dioptimalkan dengan pembaruan keamanan terbaru.
- Lingkungan yang konsisten: Memastikan lingkungan runtime yang konsisten di seluruh pengembangan, pengujian, dan produksi.
- Distribusi yang mudah: Gambar kontainer dapat dengan mudah dibagikan dan disebarkan di berbagai lingkungan.
- Isolasi platform: Aplikasi berjalan dalam kontainer terisolasi, mengurangi konflik antar aplikasi.
Kerugian
- Dependensi runtime kontainer: Lingkungan target harus memiliki runtime kontainer yang diinstal.
- Ukuran gambar: Gambar kontainer biasanya lebih besar dari metode penyebaran lainnya.
- Kurva pembelajaran: Membutuhkan pemahaman tentang konsep dan alat kontainer.
- Kustomisasi terbatas: Lebih sedikit fleksibilitas dibandingkan dengan Dockerfiles kustom untuk skenario kompleks.
Terbitkan
dotnet publish -c Release [-r <RID>] /t:PublishContainer
-c ReleaseTombol ini mengatur konfigurasi build ke Rilis, yang dioptimalkan untuk penerapan produksi.
-r <RID>Pengalih ini menggunakan pengidentifikasi runtime (RID) untuk menentukan platform target dan memastikan dependensi asli sudah disertakan (jika diperlukan). Untuk daftar pengidentifikasi runtime, lihat Katalog Pengidentifikasi Runtime (RID).
-t:PublishContainerTarget ini menerbitkan aplikasi sebagai gambar kontainer.
Anda juga dapat menggunakan pendekatan terbitkan profil:
dotnet publish -c Release [-r <RID>] -p:PublishProfile=DefaultContainer
-p:PublishProfile=DefaultContainerProfil ini memicu proses penerbitan kontainer.
- Klik kanan proyek di Penjelajah Solusi dan pilih Publish.
- Pilih Container Registry sebagai target penerbitan dan pilih Berikutnya.
- Pilih registri kontainer target Anda (seperti Azure Container Registry, Docker Hub, atau Generic Registry) dan pilih Next.
- Konfigurasikan detail dan autentikasi koneksi registri.
- Di profil publikasi, pilih Perlihatkan semua pengaturan.
- Atur Mode Penyebaran ke Mandiri atau Bergantung kerangka kerja berdasarkan kebutuhan Anda.
- Atur Runtime Target ke platform yang Anda inginkan (misalnya, linux-x64 untuk kontainer Linux).
- Konfigurasikan pengaturan khusus kontainer seperti nama gambar dan tag.
- Pilih Simpan lalu Terbitkan.
Untuk informasi selengkapnya tentang penyebaran kontainer, lihat gambaran umum pembuatan kontainer .NET SDK.
Lihat juga
- katalog .NET Runtime Identifier (RID)
- Pilih versi .NET yang akan digunakan
- Penerbitan untuk macOS