Bagikan melalui


dotnet run

Artikel ini berlaku untuk: ✔️ .NET 6 SDK dan versi yang lebih baru

Nama

dotnet run - Menjalankan kode sumber tanpa perintah kompilasi atau peluncuran eksplisit.

Sinopsis

dotnet run [<applicationArguments>]
  [-a|--arch <ARCHITECTURE>] [--artifacts-path <ARTIFACTS_DIR>]
  [-c|--configuration <CONFIGURATION>] [-e|--environment <KEY=VALUE>]
  [--file <FILE_PATH>] [-f|--framework <FRAMEWORK>] [--force] [--interactive]
  [--launch-profile <NAME>] [--no-build] [--no-dependencies]
  [--no-launch-profile] [--no-restore] [--os <OS>] [--project <PATH>]
  [-r|--runtime <RUNTIME_IDENTIFIER>] [--tl:[auto|on|off]]
  [-v|--verbosity <LEVEL>] [[--] [application arguments]]

dotnet run -h|--help

Deskripsi

Perintah ini dotnet run menyediakan opsi yang nyaman untuk menjalankan aplikasi Anda dari kode sumber dengan satu perintah. Ini berguna untuk pengembangan iteratif cepat dari baris perintah. Perintah bergantung pada dotnet build perintah untuk membangun kode. Persyaratan apa pun untuk build juga berlaku dotnet run .

Catatan

dotnet run tidak menghormati argumen seperti /property:property=value, yang dihormati oleh dotnet build.

File output ditulis ke lokasi default, yaitu bin/<configuration>/<target>. Misalnya jika Anda memiliki netcoreapp2.1 aplikasi dan Anda menjalankan dotnet run, output ditempatkan di bin/Debug/netcoreapp2.1. File ditimpa sesuai kebutuhan. File sementara ditempatkan di obj direktori.

Jika proyek menentukan beberapa kerangka kerja, menjalankan dotnet run menghasilkan kesalahan kecuali -f|--framework <FRAMEWORK> opsi digunakan untuk menentukan kerangka kerja.

Perintah dotnet run digunakan dalam konteks proyek, bukan rakitan yang dibangun. Jika Anda mencoba menjalankan DLL aplikasi yang bergantung pada kerangka kerja, Anda harus menggunakan dotnet tanpa perintah. Misalnya, untuk menjalankan myapp.dll, gunakan:

dotnet myapp.dll

Untuk informasi selengkapnya tentang dotnet driver, lihat gambaran umum .NET CLI.

Untuk menjalankan aplikasi, dotnet run perintah menyelesaikan dependensi aplikasi yang berada di luar runtime bersama dari cache NuGet. Karena menggunakan dependensi cache, tidak disarankan untuk digunakan dotnet run untuk menjalankan aplikasi dalam produksi. Sebagai gantinya, buat penyebaran menggunakan dotnet publish perintah dan sebarkan output yang diterbitkan.

Pemulihan implisit

Anda tidak harus menjalankan dotnet restore karena dijalankan secara implisit oleh semua perintah yang memerlukan terjadinya pemulihan, seperti dotnet new, dotnet build, dotnet run, dotnet test, dotnet publish, dan dotnet pack. Untuk menonaktifkan pemulihan implisit, gunakan opsi --no-restore.

Perintah dotnet restore masih berguna dalam skenario tertentu di mana pemulihan secara eksplisit masuk akal, seperti pembangunan integrasi berkelanjutan di Azure DevOps Services atau dalam sistem pembangunan yang perlu secara eksplisit mengontrol saat pemulihan terjadi.

Untuk informasi tentang cara mengelola umpan NuGet, lihat dotnet restore dokumentasi.

Perintah ini mendukung opsi dotnet restore ketika diteruskan dalam bentuk panjang (misalnya, --source). Opsi pendek, seperti -s, tidak didukung.

Pengunduhan manifes beban kerja

Saat Anda menjalankan perintah ini, pengunduhan latar belakang asinkron manifes iklan untuk beban kerja akan dimulai. Jika unduhan masih berjalan saat perintah ini selesai, unduhan akan dihentikan. Untuk informasi selengkapnya, lihat Manifes iklan.

Arguments

<applicationArguments>

Argumen diteruskan ke aplikasi yang sedang dijalankan.

Argumen apa pun yang tidak dikenali diteruskan dotnet run ke aplikasi. Untuk memisahkan argumen dari dotnet run argumen untuk aplikasi, gunakan -- opsi .

Opsi

  • --

    Memisahkan argumen ke dotnet run dari argumen untuk aplikasi yang dijalankan. Semua argumen setelah pemisah ini diteruskan ke eksekusi aplikasi.

  • -a|--arch <ARCHITECTURE>

    Menentukan arsitektur target. Hal ini adalah sintaks singkat untuk mengatur Pengidentifikasi Runtime (RID), di mana nilai yang disediakan digabung dengan RID default. Misalnya, pada komputer win-x64, menentukan --arch x86 akan mengatur RID ke win-x86. Jika Anda menggunakan opsi ini, jangan gunakan opsi -r|--runtime. Tersedia sejak .NET 6 Preview 7.

  • --artifacts-path <ARTIFACTS_DIR>

    Semua file output build dari perintah yang dijalankan akan masuk ke subfolder di bawah jalur yang ditentukan, dipisahkan oleh proyek. Untuk informasi selengkapnya, lihat Tata Letak Output Artefak . Tersedia sejak .NET 8 SDK.

  • -c|--configuration <CONFIGURATION>

    Menentukan konfigurasi build. Pengaturan default untuk sebagian besar proyek adalah Debug, tetapi Anda dapat mengambil alih pengaturan konfigurasi build di proyek Anda.

  • --disable-build-servers

    Memaksa perintah untuk mengabaikan server build persisten apa pun. Opsi ini menyediakan cara yang konsisten untuk menonaktifkan semua penggunaan penembolokan build, yang memaksa build dari awal. Build yang tidak mengandalkan cache berguna ketika cache mungkin rusak atau salah karena beberapa alasan. Tersedia sejak .NET 7 SDK.

  • -e|--environment <KEY=VALUE>

    Mengatur variabel lingkungan yang ditentukan dalam proses yang akan dijalankan oleh perintah . Variabel lingkungan yang ditentukan tidak diterapkan ke dotnet run proses.

    Variabel lingkungan yang diteruskan melalui opsi ini lebih diutamakan daripada variabel lingkungan sekitar, direktif System.CommandLine env , dan environmentVariables dari profil peluncuran yang dipilih. Untuk informasi selengkapnya, lihat Variabel lingkungan.

    (Opsi ini ditambahkan dalam .NET SDK 9.0.200.)

  • -f|--framework <FRAMEWORK>

    Membangun dan menjalankan aplikasi menggunakan kerangka kerja yang ditentukan. Kerangka kerja harus ditentukan dalam file proyek.

  • --file <FILE_PATH>

    Jalur ke aplikasi berbasis file yang akan dijalankan. Jika jalur tidak ditentukan, direktori saat ini digunakan untuk menemukan dan menjalankan file. Untuk informasi selengkapnya tentang aplikasi berbasis file, lihat Membangun aplikasi C# berbasis file.

    Di Unix, Anda dapat menjalankan aplikasi berbasis file secara langsung, menggunakan nama file sumber pada baris perintah alih-alih dotnet run. Pertama, pastikan file memiliki izin eksekusi. Kemudian, tambahkan baris #! shebang sebagai baris pertama file, misalnya:

    #!/usr/bin/env dotnet run
    

    Kemudian Anda dapat menjalankan file langsung dari baris perintah:

    ./ConsoleApp.cs
    

    Diperkenalkan dalam .NET SDK 10.0.100.

  • --force

    Memaksa semua dependensi untuk diselesaikan bahkan jika pemulihan terakhir berhasil. Menentukan bendera ini sama dengan menghapus file project.assets.json.

  • --interactive

    Memungkinkan perintah berhenti dan menunggu input atau tindakan pengguna. Misalnya, untuk menyelesaikan autentikasi.

  • --launch-profile <NAME>

    Nama profil peluncuran (jika ada) untuk digunakan saat meluncurkan aplikasi. Profil peluncuran ditentukan dalam file launchSettings.json dan biasanya disebut Development, , Stagingdan Production. Untuk informasi selengkapnya, lihat Bekerja dengan beberapa lingkungan.

  • --no-build

    Tidak membangun proyek sebelum berjalan. Ini juga secara implisit --no-restore mengatur bendera.

  • --no-cache

    Lewati pemeriksaan terbaru dan selalu bangun program sebelum berjalan.

  • --no-dependencies

    Saat memulihkan proyek dengan referensi project-to-project (P2P), memulihkan proyek root dan bukan referensi.

  • --no-launch-profile

    Tidak mencoba menggunakan launchSettings.json untuk mengonfigurasi aplikasi.

  • --no-restore

    Tidak menjalankan pemulihan implisit saat menjalankan perintah.

  • --no-self-contained

    Terbitkan aplikasi Anda sebagai aplikasi yang bergantung pada kerangka kerja. Runtime .NET yang kompatibel harus diinstal pada komputer target untuk menjalankan aplikasi Anda.

  • --os <OS>

    Menentukan sistem operasi (OS) target. Hal ini adalah sintaks singkat untuk mengatur Pengidentifikasi Runtime (RID), di mana nilai yang disediakan digabung dengan RID default. Misalnya, pada komputer win-x64, menentukan --os linux akan mengatur RID ke linux-x64. Jika Anda menggunakan opsi ini, jangan gunakan opsi -r|--runtime. Tersedia sejak .NET 6.

  • --project <PATH>

    Menentukan jalur file proyek yang akan dijalankan (nama folder atau jalur lengkap). Jika tidak ditentukan, defaultnya ke direktori saat ini.

    Singkatan -p untuk --project tidak digunakan lagi mulai dari .NET 6 SDK. Untuk waktu yang terbatas, -p masih dapat digunakan --project meskipun peringatan penghentian. Jika argumen yang disediakan untuk opsi tidak berisi =, perintah akan menerima -p sebagai singkatan --projectdari . Jika tidak, perintah mengasumsikan bahwa -p singkatan dari --property. Penggunaan -p fleksibel untuk --project ini akan di-fase di .NET 7.

  • --property:<NAME>=<VALUE>

    Mengatur satu atau beberapa properti MSBuild. Tentukan beberapa properti yang dibatasi oleh titik koma atau dengan mengulangi opsi:

    --property:<NAME1>=<VALUE1>;<NAME2>=<VALUE2>
    --property:<NAME1>=<VALUE1> --property:<NAME2>=<VALUE2>
    

    Formulir -p pendek dapat digunakan untuk --property. Jika argumen yang disediakan untuk opsi berisi =, -p diterima sebagai singkatan dari --property. Jika tidak, perintah mengasumsikan bahwa -p singkatan dari --project.

    Untuk meneruskan --property ke aplikasi daripada mengatur properti MSBuild, berikan opsi setelah pemisah -- sintaks, misalnya:

    dotnet run -- --property name=value
    
  • -r|--runtime <RUNTIME_IDENTIFIER>

    Menentukan runtime target untuk memulihkan paket. Untuk daftar Pengidentifikasi Runtime (RID), lihat katalog RID.

  • --sc|--self-contained

    Terbitkan runtime .NET dengan aplikasi Anda sehingga runtime tidak perlu diinstal pada komputer target.

  • --tl:[auto|on|off]

    Menentukan apakah Terminal Logger harus digunakan untuk output build. Defaultnya adalah auto, yang pertama memverifikasi lingkungan sebelum mengaktifkan pengelogan terminal. Pemeriksaan lingkungan memverifikasi bahwa terminal mampu menggunakan fitur output modern dan tidak menggunakan output standar yang dialihkan sebelum mengaktifkan pencatat baru. on melewati pemeriksaan lingkungan dan mengaktifkan pengelogan terminal. off melewati pemeriksaan lingkungan dan menggunakan pencatat konsol default.

    Terminal Logger menunjukkan fase pemulihan diikuti oleh fase build. Selama setiap fase, proyek bangunan saat ini muncul di bagian bawah terminal. Setiap proyek yang membangun menghasilkan target MSBuild yang saat ini sedang dibangun dan jumlah waktu yang dihabiskan untuk target tersebut. Anda dapat mencari informasi ini untuk mempelajari lebih lanjut tentang build. Setelah proyek selesai dibangun, satu bagian "build completed" ditulis yang menangkap:

    • Nama proyek bawaan.
    • Kerangka kerja target (jika multi-target).
    • Status build tersebut.
    • Output utama build tersebut (yang di-hyperlink).
    • Diagnostik apa pun yang dihasilkan untuk proyek tersebut.

    Opsi ini tersedia mulai dari .NET 8.

  • -v|--verbosity <LEVEL>

    Mengatur tingkat verbositas perintah. Nilai yang diizinkan adalah q[uiet], m[inimal], n[ormal], d[etailed], dan diag[nostic]. Default adalah minimal. Untuk informasi selengkapnya, lihat LoggerVerbosity .

  • -?|-h|--help

    Mencetak deskripsi cara menggunakan perintah.

Variabel lingkungan

Ada empat mekanisme di mana variabel lingkungan dapat diterapkan ke aplikasi yang diluncurkan:

  1. Variabel lingkungan sekitar dari sistem operasi saat perintah dijalankan.
  2. Arahan System.CommandLine env , seperti [env:key=value]. Ini berlaku untuk seluruh dotnet run proses, bukan hanya proyek yang dijalankan oleh dotnet run.
  3. environmentVariables dari profil peluncuran yang dipilih (-lp) dalam filelaunchSettings.json proyek, jika ada. Ini berlaku untuk proyek yang dijalankan oleh dotnet run.
  4. -e|--environment Nilai opsi CLI (ditambahkan dalam .NET SDK versi 9.0.200). Ini berlaku untuk proyek yang dijalankan oleh dotnet run.

Lingkungan dibangun dalam urutan yang sama dengan daftar ini, sehingga -e|--environment opsi memiliki prioritas tertinggi.

Contoh

  • Jalankan proyek di direktori saat ini:

    dotnet run
    
  • Jalankan aplikasi berbasis file yang ditentukan di direktori saat ini:

    dotnet run --file ConsoleApp.cs
    

    Dukungan aplikasi berbasis file ditambahkan di .NET SDK 10.0.100.

  • Jalankan proyek yang ditentukan:

    dotnet run --project ./projects/proj1/proj1.csproj
    
  • Jalankan proyek di direktori saat ini, menentukan Konfigurasi rilis:

    dotnet run --property:Configuration=Release
    
  • Jalankan proyek di direktori saat ini ( --help argumen dalam contoh ini diteruskan ke aplikasi, karena opsi kosong -- digunakan):

    dotnet run --configuration Release -- --help
    
  • Pulihkan dependensi dan alat untuk proyek di direktori saat ini hanya memperlihatkan output minimal lalu jalankan proyek:

    dotnet run --verbosity m
    
  • Jalankan proyek di direktori saat ini menggunakan kerangka kerja yang ditentukan dan teruskan argumen ke aplikasi:

    dotnet run -f net6.0 -- arg1 arg2
    

    Dalam contoh berikut, tiga argumen diteruskan ke aplikasi. Satu argumen diteruskan menggunakan -, dan dua argumen diteruskan setelah --:

    dotnet run -f net6.0 -arg1 -- arg2 arg3