Bagikan melalui


Gambaran umum penerbitan aplikasi .NET

Artikel ini menjelaskan berbagai cara untuk menerbitkan aplikasi .NET. Ini mencakup mode penerbitan, cara menghasilkan biner executable dan lintas platform, dan dampak dari setiap pendekatan pada lingkungan penyebaran dan runtime. Anda dapat menerbitkan aplikasi .NET menggunakan .NET CLI atau Visual Studio.

Untuk tutorial singkat tentang penerbitan, lihat Tutorial: Menerbitkan aplikasi konsol .NET menggunakan Visual Studio Code.

Untuk tutorial singkat tentang penerbitan, lihat Tutorial: Menerbitkan aplikasi konsol .NET menggunakan Visual Studio.

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 telah menginstal .NET Runtime yang sesuai 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 dependen 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 terinstal yang dapat digunakan aplikasi.

Penting

Anda menentukan platform target dengan pengidentifikasi runtime (RID). Untuk informasi selengkapnya tentang RID, lihat .NET RID Catalog.

Dasar-dasar penerbitan

Pengaturan <TargetFramework> 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 <TargetFrameworks> 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 -c parameter .

dotnet publish -c Release -f net9.0

Direktori output default perintah dotnet publish adalah ./bin/<BUILD-CONFIGURATION>/<TFM>/publish/. Misalnya, dotnet publish -c Release -f net9.0 menerbitkan ke ./bin/Release/net9.0/publish/. 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 UseAppHost properti , yang default ke true. Untuk menerbitkan DLL portabel saja tanpa executable khusus platform, atur UseAppHost ke false pada baris perintah (-p:UseAppHost=false) 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 Windows API 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 menerbitkan dan menargetkan platform tertentu, dependensi khusus platform dari paket NuGet disalin ke folder terbitkan.

Untuk memastikan bahwa aplikasi Anda diterbitkan dengan dependensi aslinya, terbitkan untuk platform tertentu:

dotnet publish -c Release -r <RID>
  • -c Release

    Sakelar ini mengatur konfigurasi build ke Rilis, yang dioptimalkan untuk penyebaran produksi.

  • -r <RID>

    Sakelar ini menggunakan pengidentifikasi runtime (RID) untuk menentukan platform target dan memastikan dependensi asli disertakan (jika diperlukan). Untuk daftar pengidentifikasi runtime, lihat Katalog Pengidentifikasi Runtime (RID).

  1. Klik kanan proyek di Penjelajah Solusi dan pilih Terbitkan.
  2. Jika ini pertama kalinya Anda menerbitkan, pilih Folder sebagai target penerbitan dan pilih Berikutnya.
  3. Pilih lokasi folder atau terima default, lalu pilih Selesai.
  4. Di profil publikasi, pilih Perlihatkan semua pengaturan.
  5. Atur Runtime Target ke platform yang Anda inginkan (misalnya, win-x64 untuk Windows 64-bit).
  6. 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 AOT asli 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 serupa myapp.exe di Windows atau hanya myapp pada platform lain.

Aplikasi Anda dikonfigurasi untuk menargetkan versi .NET tertentu. Runtime .NET yang ditargetkan tersebut 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 Memilih versi .NET yang akan digunakan.

Keuntungan

  • Penyebaran kecil: Hanya aplikasi dan dependensinya yang didistribusikan. Lingkungan tempat aplikasi dijalankan harus sudah menginstal runtime .NET.
  • Lintas platform: Aplikasi dan apa pun . Pustaka berbasis NET berjalan pada sistem operasi lain.
  • Menggunakan runtime patch terbaru: Aplikasi menggunakan runtime terbaru yang diinstal di lingkungan.

Kerugian

  • Memerlukan pra-penginstalan runtime: Aplikasi hanya dapat berjalan jika versi .NET yang ditargetkannya 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 dotnet myapp.dll. Anda dapat menjalankan apphost yang dapat dieksekusi secara langsung alih-alih memanggil dotnet myapp.dll, 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, tumpukan bayangan Control-flow Enforcement Technology (CET) diaktifkan secara default dimulai dengan .NET 9. Mitigasi yang diterapkan pada dotnet merupakan titik kesamaan terendah dari semua runtime yang didukung.

Terbitkan

dotnet publish -c Release [-r <RID>]
  • -c Release

    Sakelar ini mengatur konfigurasi build ke Rilis, yang dioptimalkan untuk penyebaran produksi.

  • -r <RID>

    Sakelar ini menggunakan pengidentifikasi runtime (RID) untuk menentukan platform target dan memastikan dependensi asli 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 false

    Switch ini secara eksplisit memberi tahu .NET SDK untuk membuat penyebaran yang bergantung pada kerangka kerja.

  1. Klik kanan proyek di Penjelajah Solusi dan pilih Terbitkan.
  2. Jika ini pertama kalinya Anda menerbitkan, pilih Folder sebagai target penerbitan dan pilih Berikutnya.
  3. Pilih lokasi folder atau terima default, lalu pilih Selesai.
  4. Di profil publikasi, pilih Perlihatkan semua pengaturan.
  5. Atur Mode Penyebaran ke Dependen Kerangka Kerja (ini adalah default).
  6. Atur Runtime Target ke platform yang Anda inginkan (misalnya, win-x64 untuk Windows 64-bit).
  7. Pilih Simpan lalu Terbitkan.

Mengonfigurasi perilaku pencarian penginstalan .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 untuk setiap eksekusi. Variabel DOTNET_ROOT lingkungan dapat digunakan untuk menunjuk ke lokasi kustom. Untuk informasi selengkapnya tentang semua DOTNET_ROOT opsi konfigurasi, lihat variabel lingkungan .NET.

Secara umum, praktik terbaik untuk menggunakan DOTNET_ROOT adalah:

  1. Bersihkan DOTNET_ROOT variabel lingkungan terlebih dahulu, yang berarti semua variabel lingkungan yang dimulai dengan teks DOTNET_ROOT.
  2. Atur DOTNET_ROOT, dan hanya DOTNET_ROOT, ke jalur target.
  3. Jalankan target apphost.

Di .NET 9 dan versi yang lebih baru, Anda dapat mengonfigurasi jalur pencarian penginstalan .NET dari executable yang diterbitkan melalui AppHostDotNetSearch properti dan AppHostRelativeDotNet .

AppHostDotNetSearch memungkinkan menentukan satu atau beberapa lokasi di mana executable akan mencari penginstalan .NET:

  • AppLocal: folder aplikasi yang dapat dieksekusi
  • AppRelative: jalur relatif terhadap aplikasi yang dapat dieksekusi
  • EnvironmentVariable: nilai DOTNET_ROOT[_<arch>] variabel lingkungan
  • Global: lokasi penginstalan global terdaftar dan default

AppHostRelativeDotNet menentukan jalur relatif terhadap executable yang akan dicari saat AppHostDotNetSearch berisi AppRelative.

Untuk informasi selengkapnya, lihat AppHostDotNetSearchopsi lokasi , AppHostRelativeDotNet, dan instal di apphost.

Penyebaran DLL lintas platform

Atau, Anda dapat memublikasikan aplikasi sebagai DLL lintas platform tanpa executable khusus platform. Dalam mode ini, myapp.dll file dibuat di folder terbitkan output. Untuk menjalankan aplikasi Anda, navigasikan ke folder output dan gunakan dotnet myapp.dll perintah .

Untuk menerbitkan sebagai DLL lintas platform:

dotnet publish -c Release -p:UseAppHost=false
  • -c Release

    Sakelar ini mengatur konfigurasi build ke Rilis, yang dioptimalkan untuk penyebaran produksi.

  • -p:UseAppHost=false

    Properti ini menonaktifkan pembuatan executable khusus platform, hanya menghasilkan DLL portabel.

  1. Klik kanan proyek di Penjelajah Solusi dan pilih Terbitkan.
  2. Jika ini pertama kalinya Anda menerbitkan, pilih Folder sebagai target penerbitan dan pilih Berikutnya.
  3. Pilih lokasi folder atau terima default, lalu pilih Selesai.
  4. Di profil publikasi, pilih Perlihatkan semua pengaturan.
  5. Atur Mode Penyebaran ke Dependen Kerangka Kerja.
  6. Hapus centang Buat file tunggal.
  7. Atur Runtime Target ke Portabel (atau biarkan kosong).
  8. Pilih Simpan lalu Terbitkan.

Penyebaran mandiri

Saat Anda menerbitkan penyebaran mandiri (SCD), proses penerbitan membuat executable khusus platform. 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 Memilih versi .NET yang akan digunakan.

Keuntungan

  • Kontrol versi .NET: Kontrol 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 yang bergantung pada kerangka kerja.
  • Lebih sulit untuk memperbarui versi .NET: Runtime .NET hanya dapat ditingkatkan dengan merilis versi baru aplikasi.

Saran

Anda dapat mengurangi ukuran total aplikasi mandiri yang kompatibel dengan menerbitkan yang dipangkas atau dengan mengaktifkan mode invarian globalisasi. Untuk informasi selengkapnya tentang mode invarian globalisasi, lihat Mode Invarian Globalisasi .NET.

Terbitkan

dotnet publish -c Release -r <RID> --self-contained true
  • -c Release

    Sakelar ini mengatur konfigurasi build ke Rilis, yang dioptimalkan untuk penyebaran produksi.

  • -r <RID>

    Sakelar ini menggunakan pengidentifikasi runtime (RID) untuk menentukan platform target dan memastikan dependensi asli disertakan (jika diperlukan). Untuk daftar pengidentifikasi runtime, lihat Katalog Pengidentifikasi Runtime (RID).

  • --self-contained true

    Sakelar ini memberi tahu .NET SDK untuk membuat executable sebagai penyebaran mandiri (SCD).

  1. Klik kanan proyek di Penjelajah Solusi dan pilih Terbitkan.
  2. Jika ini pertama kalinya Anda menerbitkan, pilih Folder sebagai target penerbitan dan pilih Berikutnya.
  3. Pilih lokasi folder atau terima default, lalu pilih Selesai.
  4. Di profil publikasi, pilih Perlihatkan semua pengaturan.
  5. Atur Mode Penyebaran ke Mandiri.
  6. Atur Runtime Target ke platform yang Anda inginkan (misalnya, win-x64 untuk Windows 64-bit).
  7. 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 file tunggal selalu OS dan arsitektur spesifik. 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 Release

    Sakelar ini mengatur konfigurasi build ke Rilis, yang dioptimalkan untuk penyebaran produksi.

  • -r <RID>

    Sakelar ini menggunakan pengidentifikasi runtime (RID) untuk menentukan platform target dan memastikan dependensi asli disertakan (jika diperlukan). Untuk daftar pengidentifikasi runtime, lihat Katalog Pengidentifikasi Runtime (RID).

  • -p:PublishSingleFile=true

    Properti ini menggabungkan semua file yang bergantung pada aplikasi ke dalam satu biner.

  1. Klik kanan proyek di Penjelajah Solusi dan pilih Terbitkan.
  2. Jika ini pertama kalinya Anda menerbitkan, pilih Folder sebagai target penerbitan dan pilih Berikutnya.
  3. Pilih lokasi folder atau terima default, lalu pilih Selesai.
  4. Di profil publikasi, pilih Perlihatkan semua pengaturan.
  5. Atur Mode Penyebaran ke Mandiri atau Bergantung kerangka kerja.
  6. Atur Runtime Target ke platform yang Anda inginkan (misalnya, win-x64 untuk Windows 64-bit).
  7. Centang Buat file tunggal.
  8. Pilih Simpan lalu Terbitkan.

Penyebaran AOT asli

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.
  • Mengurangi penggunaan memori: Jejak 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 penelusuran kesalahan: Pengalaman penelusuran kesalahan 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 Release

    Sakelar ini mengatur konfigurasi build ke Rilis, yang dioptimalkan untuk penyebaran produksi.

  • -r <RID>

    Sakelar ini menggunakan pengidentifikasi runtime (RID) untuk menentukan platform target dan memastikan dependensi asli disertakan (jika diperlukan). Untuk daftar pengidentifikasi runtime, lihat Katalog Pengidentifikasi Runtime (RID).

  • -p:PublishAot=true

    Properti ini memungkinkan kompilasi AOT Asli, yang mengkompilasi aplikasi langsung ke kode asli.

Penerbitan AOT asli harus dikonfigurasi dalam file proyek. Anda tidak dapat mengaktifkannya melalui antarmuka pengguna penerbitan Visual Studio.

  1. Di Penjelajah Solusi, klik kanan proyek Anda dan pilih Edit File Proyek.

  2. Tambahkan properti berikut ke <PropertyGroup>:

    <PublishAot>true</PublishAot>
    
  3. Simpan file proyek.

  4. Klik kanan proyek di Penjelajah Solusi dan pilih Terbitkan.

  5. Jika ini pertama kalinya Anda menerbitkan, pilih Folder sebagai target penerbitan dan pilih Berikutnya.

  6. Pilih lokasi folder atau terima default, lalu pilih Selesai.

  7. Di profil publikasi, pilih Perlihatkan semua pengaturan.

  8. Atur Mode Penyebaran ke Mandiri.

  9. Atur Runtime Target ke platform yang Anda inginkan (misalnya, win-x64 untuk Windows 64-bit).

  10. 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 Release

    Sakelar ini mengatur konfigurasi build ke Rilis, yang dioptimalkan untuk penyebaran produksi.

  • -r <RID>

    Sakelar ini menggunakan pengidentifikasi runtime (RID) untuk menentukan platform target dan memastikan dependensi asli disertakan (jika diperlukan). Untuk daftar pengidentifikasi runtime, lihat Katalog Pengidentifikasi Runtime (RID).

  • -p:PublishReadyToRun=true

    Properti ini memungkinkan kompilasi ReadyToRun, yang meningkatkan performa startup dengan mengkompilasi rakitan sebelumnya.

  1. Klik kanan proyek di Penjelajah Solusi dan pilih Terbitkan.
  2. Jika ini pertama kalinya Anda menerbitkan, pilih Folder sebagai target penerbitan dan pilih Berikutnya.
  3. Pilih lokasi folder atau terima default, lalu pilih Selesai.
  4. Di profil publikasi, pilih Perlihatkan semua pengaturan.
  5. Atur Mode Penyebaran ke Mandiri atau Bergantung kerangka kerja.
  6. Atur Runtime Target ke platform yang Anda inginkan (misalnya, win-x64 untuk Windows 64-bit).
  7. Centang Aktifkan kompilasi ReadyToRun.
  8. Pilih Simpan lalu Terbitkan.

Untuk informasi selengkapnya tentang penyebaran ReadyToRun, lihat Kompilasi ReadyToRun.

Penyebaran kontainer

Saat Anda menerbitkan aplikasi sebagai kontainer, .NET SDK 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 EnableSdkContainerSupport properti ke true.

Saran

Untuk informasi selengkapnya tentang pengaturan proyek yang terkait dengan kontainer, lihat Membuat kontainer 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 menginstal runtime kontainer.
  • 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 Release

    Sakelar ini mengatur konfigurasi build ke Rilis, yang dioptimalkan untuk penyebaran produksi.

  • -r <RID>

    Sakelar ini menggunakan pengidentifikasi runtime (RID) untuk menentukan platform target dan memastikan dependensi asli disertakan (jika diperlukan). Untuk daftar pengidentifikasi runtime, lihat Katalog Pengidentifikasi Runtime (RID).

  • -t:PublishContainer

    Target ini menerbitkan aplikasi sebagai gambar kontainer.

Anda juga dapat menggunakan pendekatan terbitkan profil:

dotnet publish -c Release [-r <RID>] -p:PublishProfile=DefaultContainer
  • -p:PublishProfile=DefaultContainer

    Profil ini memicu proses penerbitan kontainer.

  1. Klik kanan proyek di Penjelajah Solusi dan pilih Terbitkan.
  2. Pilih Container Registry sebagai target penerbitan dan pilih Berikutnya.
  3. Pilih registri kontainer target Anda (seperti Azure Container Registry, Docker Hub, atau Generic Registry) dan pilih Berikutnya.
  4. Konfigurasikan detail dan autentikasi koneksi registri.
  5. Di profil publikasi, pilih Perlihatkan semua pengaturan.
  6. Atur Mode Penyebaran ke Mandiri atau Bergantung kerangka kerja berdasarkan kebutuhan Anda.
  7. Atur Runtime Target ke platform yang Anda inginkan (misalnya, linux-x64 untuk kontainer Linux).
  8. Konfigurasikan pengaturan khusus kontainer seperti nama gambar dan tag.
  9. Pilih Simpan lalu Terbitkan.

Untuk informasi selengkapnya tentang penyebaran kontainer, lihat Gambaran umum pembuatan kontainer .NET SDK.

Lihat juga