Debugowanie aplikacji .NET w programie WSL za pomocą programu Visual Studio
Możesz łatwo uruchamiać i debugować aplikacje .NET Core i .NET 5+ w systemie Linux bez opuszczania programu Visual Studio przy użyciu podsystemu Windows dla systemu Linux (WSL). Jeśli jesteś deweloperem międzyplatformowym, możesz użyć tej metody jako prostego sposobu testowania większej liczby środowisk docelowych.
Dla użytkownika .NET na Windows, który celuje w Linux, WSL znajduje się w idealnym punkcie równowagi pomiędzy realizmem produkcyjnym a produktywnością. W programie Visual Studio można już debugować w zdalnym środowisku systemu Linux przy użyciu zdalnego debugeralub kontenerów przy użyciu narzędzi Container Tools. Gdy realizm produkcji jest twoim głównym problemem, należy użyć jednej z tych opcji. Gdy łatwa i szybka pętla wewnętrzna jest ważniejsza niż inne czynniki, WSL jest rozwiązaniem do rozważenia.
Nie musisz wybierać tylko jednej metody! W tym samym projekcie można mieć profil uruchamiania dla platform Docker i WSL i wybrać odpowiedni dla określonego uruchomienia. Po wdrożeniu aplikacji zawsze możesz użyć zdalnego debugera, aby połączyć się z nią, jeśli wystąpi problem. Aby debugować kontener Docker uruchomiony w systemie Linux na WSL, zobacz Dołączanie do procesu działającego w kontenerze Docker.
Notatka
Począwszy od programu Visual Studio 2019 w wersji 16.11 (wersja zapoznawcza 3), nazwa celu debugowania WSL 2 została zmieniona na WSL.
Warunki wstępne
Program Visual Studio 2019 w wersji 16.9 (wersja zapoznawcza 1 lub nowsza) z opcjonalnym komponentem debugowania .NET za pomocą WSL.
Aby sprawdzić składnik WSL, wybierz Tools>Pobierz narzędzia i funkcje. W Instalatorze programu Visual Studio upewnij się, że składnik jest zainstalowany, wybierając kartę Poszczególne składniki i wpisując WSL jako termin wyszukiwania.
W niektórych wersjach programu Visual Studio składnik opcjonalny jest domyślnie dołączany do niektórych obciążeń platformy .NET.
Zainstaluj WSL.
Zainstaluj dystrybucję , którą wybierzesz.
Rozpoczynanie debugowania przy użyciu protokołu WSL
Po zainstalowaniu wymaganych składników otwórz aplikację internetową platformy ASP.NET Core lub aplikację konsolową platformy .NET Core w programie Visual Studio Zobaczysz nowy profil uruchamiania o nazwie WSL:
Wybierz ten profil, aby dodać go do launchSettings.json.
Niektóre atrybuty klucza w pliku są pokazane w poniższym przykładzie.
Notatka
Począwszy od programu Visual Studio 2022 (wersja zapoznawcza 3), nazwa polecenia w profilu uruchamiania została zmieniona z WSL2 na WSL.
"WSL": { "commandName": "WSL", "launchBrowser": true, "launchUrl": "https://localhost:5001", "environmentVariables": { "ASPNETCORE_URLS": "https://localhost:5001;http://localhost:5000", "ASPNETCORE_ENVIRONMENT": "Development" }, "distributionName": "" }
"WSL": { "commandName": "WSL2", "launchBrowser": true, "launchUrl": "https://localhost:5001", "environmentVariables": { "ASPNETCORE_URLS": "https://localhost:5001;http://localhost:5000", "ASPNETCORE_ENVIRONMENT": "Development" }, "distributionName": "" }
Po wybraniu nowego profilu rozszerzenie sprawdza, czy dystrybucja WSL jest skonfigurowana do uruchamiania aplikacji platformy .NET i pomaga zainstalować wszelkie brakujące zależności. Po zainstalowaniu tych zależności możesz przystąpić do debugowania w programie WSL.
Rozpocznij debugowanie w zwykły sposób, a aplikacja zostanie uruchomiona w domyślnej dystrybucji WSL.
Łatwym sposobem sprawdzenia, czy korzystasz z systemu Linux, jest sprawdzenie wartości
Environment.OSVersion
.
Notatka
Tylko systemy Ubuntu i Debian zostały przetestowane i są obsługiwane. Inne dystrybucje obsługiwane przez platformę .NET powinny działać, ale wymagają ręcznego instalowania środowiska uruchomieniowego .NET Runtime i curl.
Wybierz określoną dystrybucję
Domyślnie profil uruchamiania WSL 2 używa domyślnej dystrybucji ustawionej w wsl.exe. Jeśli chcesz, aby profil uruchamiania był przeznaczony dla określonej dystrybucji, niezależnie od tego domyślnego, możesz zmodyfikować profil uruchamiania. Jeśli na przykład debugujesz aplikację internetową i chcesz ją przetestować w systemie Ubuntu 20.04, profil uruchamiania będzie wyglądać następująco:
"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"
}
"WSL": {
"commandName": "WSL2",
"launchBrowser": true,
"launchUrl": "https://localhost:5001",
"environmentVariables": {
"ASPNETCORE_URLS": "https://localhost:5001;http://localhost:5000",
"ASPNETCORE_ENVIRONMENT": "Development"
},
"distributionName": "Ubuntu-20.04"
}
Określanie wielu dystrybucji docelowych
Jeśli pracujesz nad aplikacją, która musi działać w wielu dystrybucjach i chcesz szybko przetestować poszczególne z nich, możesz mieć wiele profilów uruchamiania. Jeśli na przykład musisz przetestować aplikację konsolową w systemach Debian, Ubuntu 18.04 i Ubuntu 20.04, możesz użyć następujących profilów uruchamiania:
"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"
}
"WSL : Debian": {
"commandName": "WSL2",
"distributionName": "Debian"
},
"WSL : Ubuntu 18.04": {
"commandName": "WSL2",
"distributionName": "Ubuntu-18.04"
},
"WSL : Ubuntu 20.04": {
"commandName": "WSL2",
"distributionName": "Ubuntu-20.04"
}
Dzięki tym profilom uruchamiania można łatwo przełączać się między dystrybucjami docelowymi, a wszystko to bez opuszczania komfortu programu Visual Studio.
Dołącz do uruchomionego procesu WSL
Oprócz debugowania podczas uruchamiania aplikacji za pomocą F5, można debugować, przyłączając się do uruchomionego procesu WSL przy użyciu funkcji dołącz do procesu.
Z uruchomioną aplikacją wybierz Debug>Dołącz do procesu.
Dla typu połączenia , wybierz Windows Subsystem dla systemu Linux (WSL) , a następnie wybierz dystrybucję systemu Linux dla celu połączenia .
Wybierz pozycję Dołącz.
Ustawienia w profilu uruchamiania dla programu WSL
W poniższej tabeli przedstawiono ustawienia obsługiwane w profilu uruchamiania.
Nazwa | Domyślny | Cel | Czy obsługuje tokeny? |
---|---|---|---|
ścieżka pliku wykonywalnego | dotnet | Plik wykonywalny do uruchomienia | Tak |
argumenty wiersza poleceń | Wartość właściwości MSBuild TargetPath zamapowana na środowisko WSL | Argumenty wiersza poleceń przekazane do pliku wykonywalnego Path | Tak |
workingDirectory | W przypadku aplikacji konsolowych: {OutDir} Dla aplikacji internetowych: {ProjectDir} |
Katalog roboczy, w którym należy rozpocząć debugowanie | Tak |
zmienne środowiskowe | Pary klucz-wartość zmiennych środowiskowych do ustawienia dla debugowanego procesu. | Tak | |
setupScriptPath | Skrypt do uruchomienia przed debugowaniem. Przydatne do uruchamiania skryptów, takich jak ~/.bash_profile. | Tak | |
nazwa dystrybucji | Nazwa dystrybucji WSL do użycia. | Nie | |
uruchomPrzeglądarkę | fałszywy | Czy należy uruchomić przeglądarkę | Nie |
launchUrl | Adres URL do uruchomienia, jeśli launchBrowser ma wartość true | Nie |
Obsługiwane tokeny:
{ProjectDir} — ścieżka do katalogu projektu
{OutDir} — wartość właściwości MSBuild OutDir
Notatka
Wszystkie ścieżki są przeznaczone dla systemu WSL, a nie systemu Windows.
Przekaż argument wiersza polecenia
Użyj ustawienia commandLineArgs
, aby przekazać argument wiersza polecenia do WSL w profilu uruchomieniowym.
W poniższym przykładzie przekazujesz dwa argumenty do projektu DLL o nazwie ConsoleApp.
"WSL": {
"commandName": "WSL",
"commandLineArgs": "\"{OutDir}/ConsoleApp.dll\" arg1 arg2"
}