Bagikan melalui


Debug .NET Apps di WSL dengan Visual Studio

Anda dapat dengan mudah menjalankan dan men-debug aplikasi .NET Core dan .NET 5+ Anda di Linux tanpa meninggalkan Visual Studio menggunakan Subsistem Windows untuk Linux (WSL). Jika Anda adalah pengembang lintas platform, Anda dapat menggunakan metode ini sebagai cara sederhana untuk menguji lebih banyak lingkungan target Anda.

Bagi pengguna Windows .NET yang menargetkan Linux, WSL berada di posisi ideal antara realisme produksi dan produktivitas. Di Visual Studio, Anda sudah dapat men-debug di lingkungan Linux jarak jauh menggunakan debugger jarak jauh, atau dengan kontainer menggunakan Container Tools. Ketika realisme produksi menjadi perhatian utama Anda, Anda harus menggunakan salah satu opsi tersebut. Ketika perulangan dalam yang mudah dan cepat lebih penting, WSL adalah pilihan yang bagus.

Anda tidak perlu memilih hanya satu metode! Anda dapat memiliki profil peluncuran untuk Docker dan WSL dalam proyek yang sama dan memilih mana saja yang sesuai untuk eksekusi tertentu. Dan setelah aplikasi disebarkan, Anda selalu dapat menggunakan debugger jarak jauh untuk menghubungkannya ke aplikasi jika ada masalah. Untuk men-debug kontainer Linux Docker yang berjalan di WSL, lihat Lampirkan ke proses yang berjalan pada kontainer Docker.

Nota

Mulai Visual Studio 2019 versi 16.11, target debug WSL 2 diganti namanya menjadi WSL.

Prasyarat

  • Visual Studio 2019 v16.9 atau versi yang lebih baru dengan .NET Debugging dengan komponen opsional WSL.

    Untuk memeriksa komponen WSL, pilih Alat >Ambil Alat dan Fitur. Di Penginstal Visual Studio, pastikan komponen diinstal dengan memilih tab komponen individual, dan mengetik WSL sebagai istilah pencarian.

    Di beberapa versi Visual Studio, komponen opsional disertakan secara default dengan beberapa beban kerja .NET.

  • Pasang WSL.

  • Pasang distribusi pilihan Anda.

Mulai debugging dengan WSL

  1. Setelah menginstal komponen yang diperlukan, buka aplikasi web ASP.NET Core atau aplikasi konsol .NET Core di Visual Studio, Anda akan melihat Profil Peluncuran baru bernama WSL:

    profil peluncuran WSL dalam daftar profil peluncuran

  2. Pilih profil ini untuk menambahkannya ke launchSettings.jsonAnda.

    Beberapa atribut kunci dalam file ditampilkan dalam contoh berikut.

    Nota

    Mulai dari Visual Studio 2022 Pratinjau 3, nama perintah di Profil Peluncuran berubah dari WSL2 menjadi WSL.

    "WSL": {
        "commandName": "WSL",
        "launchBrowser": true,
        "launchUrl": "https://localhost:5001",
        "environmentVariables": {
            "ASPNETCORE_URLS": "https://localhost:5001;http://localhost:5000",
            "ASPNETCORE_ENVIRONMENT": "Development"
        },
        "distributionName": ""
    }
    

    Setelah Anda memilih profil baru, ekstensi memeriksa bahwa distribusi WSL Anda dikonfigurasi untuk menjalankan aplikasi .NET, dan membantu Anda menginstal dependensi yang hilang. Setelah menginstal dependensi ini, Anda siap untuk men-debug di WSL.

  3. Mulai debugging seperti biasa, dan aplikasi Anda akan berjalan di distribusi WSL default Anda.

    Cara mudah untuk memverifikasi bahwa Anda menjalankan di Linux adalah dengan memeriksa nilai Environment.OSVersion.

Nota

Hanya Ubuntu dan Debian yang telah diuji dan didukung. Distribusi lain yang didukung oleh .NET seharusnya berfungsi tetapi memerlukan penginstalan manual .NET Runtime dan Curl.

Pilih distribusi tertentu

Secara default, profil peluncuran WSL 2 menggunakan distribusi default seperti yang diatur dalam wsl.exe. Jika Anda ingin profil peluncuran menargetkan distribusi tertentu, terlepas dari default tersebut, Anda dapat mengubah profil peluncuran Anda. Misalnya, jika Anda men-debug aplikasi web dan ingin mengujinya di Ubuntu 20.04, profil peluncuran Anda akan terlihat seperti:

"WSL": {
    "commandName": "WSL",
    "launchBrowser": true,
    "launchUrl": "https://localhost:5001",
    "environmentVariables": {
        "ASPNETCORE_URLS": "https://localhost:5001;http://localhost:5000",
        "ASPNETCORE_ENVIRONMENT": "Development"
    },
    "distributionName": "Ubuntu-20.04"
}

Menargetkan berbagai distribusi

Selangkah lagi, jika Anda mengerjakan aplikasi yang perlu dijalankan dalam beberapa distribusi dan Anda ingin cara cepat untuk menguji masing-masing aplikasi, Anda dapat memiliki beberapa profil peluncuran. Misalnya, jika Anda perlu menguji aplikasi konsol di Debian, Ubuntu 18.04, dan Ubuntu 20.04, Anda dapat menggunakan profil peluncuran berikut:

"WSL : Debian": {
    "commandName": "WSL",
    "distributionName": "Debian"
},
"WSL : Ubuntu 18.04": {
    "commandName": "WSL",
    "distributionName": "Ubuntu-18.04"
},
"WSL : Ubuntu 20.04": {
    "commandName": "WSL",
    "distributionName": "Ubuntu-20.04"
}

Dengan profil peluncuran ini, Anda dapat dengan mudah beralih bolak-balik antara distribusi target Anda, semua tanpa meninggalkan kenyamanan Visual Studio.

Beberapa profil peluncuran WSL dalam daftar profil peluncuran

Menyambungkan ke proses WSL yang sedang berjalan

Selain menelusuri kesalahan dari startup aplikasi menggunakan F5, Anda dapat mendebug dengan mengaitkan ke proses WSL yang sedang berjalan menggunakan fitur kaitkan ke proses.

  1. Dengan aplikasi berjalan, pilih Debug>Lampirkan ke Proses.

  2. Untuk jenis Koneksi , pilih Subsistem Windows untuk Linux (WSL), lalu pilih distribusi Linux untuk target Koneksi .

  3. Pilih Lampirkan.

    Cuplikan layar proses WSL dalam kotak dialog proses lampiran.

Pengaturan WSL di profil peluncuran

Tabel berikut ini memperlihatkan pengaturan yang didukung di profil peluncuran.

Nama Bawaan Maksud Mendukung Token?
executablePath dotnet Executable yang akan dijalankan Ya
commandLineArgs Nilai properti MSBuild TargetPath yang dipetakan ke lingkungan WSL Argumen baris perintah diteruskan ke executablePath Ya
workingDirectory Untuk aplikasi konsol: {OutDir}
Untuk aplikasi web: {ProjectDir}
Direktori kerja di mana memulai debugging Ya
variabelLingkungan Pasangan kunci-nilai variabel lingkungan yang akan diatur untuk proses yang sedang di-debug. Ya
setupScriptPath Skrip yang akan dijalankan sebelum debugging. Berguna untuk menjalankan skrip seperti ~/.bash_profile. Ya
distributionName Nama distribusi WSL yang akan digunakan. Tidak
bukaPeramban palsu Apakah meluncurkan browser atau tidak Tidak
launchUrl URL yang akan diluncurkan jika launchBrowser benar Tidak

Token yang didukung:

{ProjectDir} - Jalur ke direktori proyek

{OutDir} - Nilai properti MSBuild OutDir

Nota

Semua jalur untuk WSL, bukan Windows.

Melewatkan argumen baris perintah

Gunakan pengaturan commandLineArgs untuk meneruskan argumen baris perintah ke WSL di profil startup.

Dalam contoh berikut, Anda meneruskan dua argumen ke proyek DLL bernama ConsoleApp.

"WSL": {
  "commandName": "WSL",
  "commandLineArgs": "\"{OutDir}/ConsoleApp.dll\" arg1 arg2"
}

Aplikasi konsol

Untuk aplikasi konsol yang berjalan di WSL, aliran input standar (stdin) dialihkan dan tidak ada cara untuk memberikan input. Saat men-debug aplikasi konsol yang memerlukan input, mulai aplikasi langsung dari WSL menggunakan dotnet run dan tentukan jalur ke DLL di Windows. Ini menyediakan akses ke stdin karena aplikasi berjalan di konsol Linux. Untuk men-debug, gunakan instruksi yang dijelaskan di bagian Lampirkan ke proses WSL yang sedang berjalan.

Pengujian unit debug jarak jauh

Untuk men-debug pengujian unit dari jarak jauh di WSL, Anda harus menentukan lingkungan pengujian di testEnvironments.json. Untuk informasi selengkapnya, lihat Koneksi WSL 2 lokal.