Bagikan melalui


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 mandiri atauyang bergantung pada kerangka kerja . Menerbitkan aplikasi sebagai aplikasi mandiri termasuk runtime .NET bersama aplikasi, dan pengguna tidak perlu lagi khawatir menginstal .NET sebelum bisa menjalankannya. Menerbitkan aplikasi sebagai framework-dependent tidak menyertakan runtime .NET; hanya aplikasi dan dependensi pihak ketiga yang disertakan.

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 dll dinamai sesuai dengan proyek Anda. Misalnya, jika Anda memiliki aplikasi bernama word_reader, file bernama word_reader.dll dibuat. Aplikasi yang diterbitkan dengan cara ini dijalankan dengan perintah 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:

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 sebagai file dll , dan yang dapat dijalankan khusus platform yang menargetkan platform Anda saat ini. Dll bersifat lintas platform, sedangkan yang dapat dieksekusi tidak. Misalnya, jika Anda menerbitkan aplikasi bernama word_reader untuk target Windows, maka sebuah word_reader.exe executable akan dibuat bersama dengan word_reader.dll. Saat menargetkan Linux atau macOS, executable bernama word_reader dijalankan bersama dengan word_reader.dll. Jika aplikasi menggunakan paket NuGet yang memiliki implementasi khusus platform, dependensi untuk semua platform disalin ke folder publikasi\runtimes\{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.

    Saran

    pemangkasan IL dapat lebih mengurangi ukuran penyebaran Anda.

  • 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

Lihat juga