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 programu WSL. Jeśli jesteś deweloperem międzyplatformowym, możesz użyć tej metody jako prostego sposobu testowania większej liczby środowisk docelowych.
W przypadku użytkownika platformy .NET systemu Windows przeznaczonego dla systemu Linux system WSL mieszka w słodkim miejscu między realizmem produkcyjnym a produktywnością. W programie Visual Studio można już debugować w zdalnym środowisku systemu Linux przy użyciu zdalnego debugera lub kontenerów przy użyciu narzędzi kontenerów. 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, WSL jest doskonałym rozwiązaniem.
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 dołączyć go, jeśli wystąpi problem.
Uwaga
Począwszy od programu Visual Studio 2019 w wersji 16.11 (wersja zapoznawcza 3), nazwa celu debugowania WSL 2 została zmieniona na WSL.
Wymagania wstępne
Program Visual Studio 2019 w wersji 16.9 (wersja zapoznawcza 1 lub nowsza) z opcjonalnym składnikiem debugowania platformy .NET za pomocą programu WSL.
Aby sprawdzić składnik WSL, wybierz pozycję Narzędzia Pobierz narzędzia>i funkcje. W Instalator 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 program WSL.
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.
Uwaga
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 działasz w systemie Linux, jest sprawdzenie wartości
Environment.OSVersion
.
Uwaga
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 zainstalowania środowiska uruchomieniowego platformy .NET i programu Curl.
Wybierz określoną dystrybucję
Domyślnie profil uruchamiania programu 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łączanie do uruchomionego procesu WSL
Oprócz debugowania z uruchamiania aplikacji przy użyciu F5 można debugować, dołączając do uruchomionego procesu WSL przy użyciu funkcji dołączania do procesu.
Po uruchomieniu aplikacji wybierz pozycję Debuguj>dołączanie do procesu.
W polu Typ połączenia wybierz pozycję Podsystem Windows dla systemu Linux (WSL), a następnie wybierz dystrybucję systemu Linux dla elementu docelowego połączenia.
Wybierz pozycję Dołącz.
Ustawienia programu WSL w profilu uruchamiania
W poniższej tabeli przedstawiono ustawienia obsługiwane w profilu uruchamiania.
Nazwisko | Wartość domyślna | Purpose | Czy obsługuje tokeny? |
---|---|---|---|
plik wykonywalnyPath | dotnet | Plik wykonywalny do uruchomienia | Tak |
commandLineArgs | Wartość właściwości MSBuild TargetPath zamapowana na środowisko WSL | Argumenty wiersza polecenia przekazane do pliku wykonywalnegoPath | Tak |
workingDirectory | W przypadku aplikacji konsolowych: {OutDir} Dla aplikacji internetowych: {ProjectDir} |
Katalog roboczy, w którym należy rozpocząć debugowanie | Tak |
environmentVariables | 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 | |
distributionName | Nazwa dystrybucji WSL do użycia. | Nie. | |
launchBrowser | fałsz | 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
Uwaga
Wszystkie ścieżki są przeznaczone dla systemu WSL, a nie systemu Windows.
Przekazywanie argumentu wiersza polecenia
Użyj ustawienia , commandLineArgs
aby przekazać argument wiersza polecenia do programu WSL w profilu uruchamiania.
W poniższym przykładzie przekazujesz dwa argumenty do projektu DLL o nazwie ConsoleApp.
"WSL": {
"commandName": "WSL",
"commandLineArgs": "\"{OutDir}/ConsoleApp.dll\" arg1 arg2"
}