Gambaran umum penerbitan aplikasi .NET
Aplikasi yang Anda buat dengan .NET dapat diterbitkan dalam dua mode berbeda, dan mode memengaruhi cara pengguna menjalankan aplikasi Anda.
Mempublikasikan aplikasi Anda sebagai mandiri menghasilkan aplikasi yang memasukkan runtime dan pustaka .NET, serta aplikasi Anda dan dependensinya. Pengguna aplikasi dapat menjalankannya pada komputer yang tidak menginstal runtime .NET.
Menerbitkan aplikasi Anda sebagai tergantung kerangka kerja menghasilkan aplikasi yang hanya menyertakan aplikasi Anda sendiri dan dependensinya. Pengguna aplikasi harus menginstal runtime .NET secara terpisah.
Kedua mode penerbitan menghasilkan executable khusus platform secara default. Aplikasi yang bergantung pada kerangka kerja dapat dibuat tanpa executable, dan aplikasi ini adalah lintas platform.
Ketika executable diproduksi, Anda dapat menentukan platform target dengan pengidentifikasi runtime (RID). Untuk informasi selengkapnya tentang RID, lihat .NET RID Catalog.
Tabel berikut menguraikan perintah yang digunakan untuk menerbitkan aplikasi sebagai dependen kerangka kerja atau mandiri:
Jenis | Perintah |
---|---|
yang dapat dieksekusi tergantung kerangka kerja untuk platform saat ini. | dotnet publish |
yang dapat dieksekusi tergantung kerangka kerja untuk platform tertentu. | dotnet publish -r <RID> |
biner yang tergantung pada kerangka kerja. | dotnet publish |
yang dapat dieksekusi mandiri . | dotnet publish -r <RID> --self-contained |
Untuk informasi selengkapnya, lihat perintah .NET dotnet publish.
Menghasilkan file eksekusi
Executable bukan lintas platform, khusus untuk sistem operasi dan arsitektur CPU. Saat memublikasikan aplikasi dan membuat aplikasi yang dapat dieksekusi, Anda dapat menerbitkan aplikasi sebagai
Perintah berikut menghasilkan executable:
Jenis | Perintah |
---|---|
eksekusi yang tergantung pada kerangka kerja untuk platform saat ini. | dotnet publish |
yang dapat dieksekusi tergantung kerangka kerja untuk platform tertentu. | dotnet publish -r <RID> |
yang dapat dieksekusi mandiri . | dotnet publish -r <RID> --self-contained |
Menghasilkan biner lintas platform
Biner lintas platform dibuat saat Anda menerbitkan aplikasi sebagai yang bergantung pada kerangka kerja, dalam bentuk file dll . File dotnet <filename.dll>
dan dapat dijalankan di platform apa pun.
Biner lintas platform dapat dijalankan pada sistem operasi apa pun selama runtime .NET yang ditargetkan sudah diinstal. Jika runtime .NET yang ditargetkan tidak diinstal, aplikasi dapat berjalan menggunakan runtime yang lebih baru jika aplikasi dikonfigurasi untuk roll-forward. Untuk informasi selengkapnya, lihat aplikasi tergantung kerangka kerja yang melakukan pembaruan otomatis.
Anda dapat memilih untuk menjalankan aplikasi sebagai executable khusus platform atau sebagai biner lintas platform melalui perintah dotnet
. Seharusnya tidak ada perbedaan perilaku aplikasi saat meluncurkan executable khusus platform dibandingkan dengan perintah dotnet
untuk aplikasi server biasa. Meluncurkan melalui executable khusus platform memberi Anda integrasi yang lebih baik dengan OS yang mendasarinya. Misalnya:
- Anda melihat nama aplikasi yang dapat dieksekusi dalam daftar proses Anda dan tidak
dotnet
, yang bisa membingungkan jika ada lebih dari satu. - Anda dapat menyesuaikan executable khusus platform dengan fitur khusus OS. Misalnya, lihat diskusi ini tentang mengonfigurasi ukuran tumpukan default di Windows.
Perintah berikut menghasilkan biner lintas platform:
Jenis | Perintah |
---|---|
biner lintas platform yang bergantung pada kerangka kerja. | dotnet publish |
Menerbitkan dengan ketergantungan pada kerangka kerja
Aplikasi yang diterbitkan sebagai bergantung pada kerangka kerja dapat berjalan di berbagai platform dan tidak menyertakan runtime .NET. Pengguna aplikasi Anda diperlukan untuk menginstal runtime .NET.
Menerbitkan aplikasi sebagai tergantung kerangka kerja menghasilkan biner lintas platform
Biner lintas platform aplikasi Anda dapat dijalankan dengan perintah dotnet <filename.dll>
, dan dapat dijalankan di platform apa pun.
Spesifik platform dan bergantung pada kerangka kerja
Anda dapat menerbitkan aplikasi yang bergantung pada kerangka kerja yang khusus untuk platform dengan meneruskan parameter -r <RID>
ke perintah dotnet publish
. Penerbitan dengan cara ini sama dengan menerbitkanyang bergantung pada kerangka kerja , kecuali dependensi khusus platform ditangani secara berbeda. Jika aplikasi menggunakan paket NuGet yang memiliki implementasi khusus platform, hanya dependensi platform yang ditargetkan yang disalin. Dependensi ini disalin langsung ke folder penerbitan.
Meskipun secara teknis biner yang dihasilkan adalah lintas platform, dengan menargetkan platform tertentu, aplikasi Anda tidak dijamin untuk menjalankan lintas platform. Anda dapat menjalankan dotnet <filename.dll>
, tetapi aplikasi mungkin mengalami crash saat mencoba mengakses dependensi khusus platform yang hilang.
Untuk informasi selengkapnya tentang RID, lihat .NET RID Catalog.
Keuntungan
penyebaran kecil
Hanya aplikasi Anda dan dependensinya yang didistribusikan. Runtime dan pustaka .NET diinstal oleh pengguna dan semua aplikasi berbagi runtime.lintas platform
Aplikasi Anda dan pustaka berbasis .NET apa pun dapat berjalan pada sistem operasi lain. Anda tidak perlu menentukan platform target untuk aplikasi Anda. Untuk informasi tentang format file .NET, lihat Format File Rakitan .NET.Menggunakan runtime terbaru yang di-patch
Aplikasi ini menggunakan runtime terbaru (dalam keluarga versi utama-sekunder .NET yang ditargetkan) yang diinstal pada sistem target. Ini berarti aplikasi Anda secara otomatis menggunakan versi terbaru yang di-patch runtime .NET. Perilaku bawaan ini dapat diubah. Untuk informasi selengkapnya, lihat aplikasi yang bergantung pada kerangka kerja yang diperbarui.
Kelemahan
Memerlukan pra-instalasi runtime
Aplikasi Anda hanya dapat berjalan jika versi .NET target aplikasi Anda sudah diinstal pada sistem host. Anda dapat mengonfigurasi perilaku roll-forward untuk aplikasi agar memerlukan versi .NET tertentu atau mengizinkan versi .NET yang lebih baru. Untuk informasi selengkapnya, lihat aplikasi yang bergantung pada kerangka kerja yang diperbarui secara otomatis..NET dapat berubah
Dimungkinkan agar runtime dan pustaka .NET diperbarui pada komputer tempat aplikasi dijalankan. Dalam kasus yang jarang terjadi, ini dapat mengubah perilaku aplikasi Anda jika Anda menggunakan pustaka .NET, yang dilakukan sebagian besar aplikasi. Anda dapat mengonfigurasi bagaimana aplikasi Anda menggunakan versi .NET yang lebih baru. Untuk informasi selengkapnya, lihat aplikasi yang bergantung pada kerangka kerja yang dapat diperbarui.
Contoh
Terbitkan aplikasi sebagai lintas platform dan bergantung pada kerangka kerja. File executable yang menargetkan platform Anda saat ini dibuat bersama dengan file dll . Dependensi khusus platform apa pun diterbitkan dengan aplikasi.
dotnet publish
Terbitkan aplikasi sebagai platform khusus dan bergantung pada kerangka kerja. Executable Linux 64-bit dibuat bersama dengan file dll. Hanya dependensi platform yang ditargetkan yang diterbitkan dengan aplikasi.
dotnet publish -r linux-x64
Menerbitkan mandiri
Menerbitkan aplikasi Anda dalam format mandiri menghasilkan file eksekusi yang khusus pada platform. Folder penerbitan output berisi semua komponen aplikasi, termasuk pustaka .NET dan runtime target. Aplikasi ini diisolasi dari aplikasi .NET lainnya dan tidak menggunakan runtime bersama yang diinstal secara lokal. Pengguna aplikasi Anda tidak diperlukan untuk mengunduh dan menginstal .NET.
Anda dapat menerbitkan aplikasi mandiri dengan meneruskan parameter --self-contained
ke perintah dotnet publish
. Biner yang siap dijalankan diproduksi untuk platform target yang ditentukan. Misalnya, jika Anda memiliki aplikasi bernama word_reader, dan Anda menerbitkan eksekusi mandiri untuk Windows, maka sebuah file word_reader.exe akan dibuat. Saat menerbitkan untuk Linux atau macOS, file word_reader dibuat. Platform dan arsitektur target ditentukan dengan parameter -r <RID>
untuk perintah dotnet publish
. Untuk informasi selengkapnya tentang RID, lihat .NET RID Catalog.
Jika aplikasi memiliki dependensi khusus platform, seperti paket NuGet yang berisi dependensi khusus platform, ini disalin ke folder terbitkan bersama dengan aplikasi.
Keuntungan
Control versi .NET
Anda mengontrol versi .NET mana yang disebarkan dengan aplikasi Anda.penargetan khusus Platform
Karena Anda harus memublikasikan aplikasi untuk setiap platform, Anda tahu di mana aplikasi Anda berjalan. Jika .NET memperkenalkan platform baru, pengguna tidak dapat menjalankan aplikasi Anda di platform tersebut hingga Anda merilis versi yang menargetkan platform tersebut. Anda dapat menguji aplikasi untuk masalah kompatibilitas sebelum pengguna menjalankan aplikasi di platform baru.
Kerugian
penyebaran yang lebih besar
Karena aplikasi Anda menyertakan runtime .NET dan semua dependensi aplikasi Anda, ukuran unduhan dan ruang hard drive yang diperlukan lebih besar dari versi yang bergantung pada kerangka kerja. Saran
Anda dapat mengurangi ukuran deployment Anda pada sistem Linux sekitar 28 MB dengan menggunakan mode globalisasi invarian .NET . Ini memaksa aplikasi Anda untuk memperlakukan semua budaya seperti budaya invarian.
Lebih sulit untuk memperbarui versi .NET
.NET Runtime (didistribusikan dengan aplikasi Anda) hanya dapat ditingkatkan dengan merilis versi baru aplikasi Anda.
Contoh
Rilis aplikasi mandiri. Executable 64-bit untuk macOS sudah dibuat.
dotnet publish -r osx-x64 --self-contained
Menerbitkan aplikasi yang berfungsi secara mandiri. File executable untuk Windows 64-bit telah dibuat.
dotnet publish -r win-x64 --self-contained
Menerbitkan dengan ReadyToRun images
Menerapkan dengan gambar ReadyToRun meningkatkan waktu startup aplikasi Anda dengan konsekuensi meningkatkan ukuran aplikasi Anda. Untuk informasi selengkapnya, lihat ReadyToRun.
Keuntungan
- waktu mulai
Ditingkatkan
Aplikasi ini menghabiskan lebih sedikit waktu untuk menjalankan JIT.
Kekurangan
-
ukuran yang lebih besar
Aplikasi ini lebih besar pada disk.
Contoh
Menerbitkan aplikasi mandiri dan ReadyToRun. Dibuatlah executable macOS 64-bit.
dotnet publish -c Release -r osx-x64 --self-contained -p:PublishReadyToRun=true
Terbitkan aplikasi yang mandiri dan ReadyToRun. Sebuah executable Windows 64-bit dibuat.
dotnet publish -c Release -r win-x64 --self-contained -p:PublishReadyToRun=true