Ladění aplikací .NET ve WSL pomocí sady Visual Studio
V Linuxu můžete snadno spouštět a ladit aplikace .NET Core a .NET 5+ bez opuštění sady Visual Studio pomocí Subsystém Windows pro Linux (WSL). Pokud jste vývojář pro různé platformy, můžete tuto metodu použít jako jednoduchý způsob, jak otestovat více cílových prostředí.
Pro uživatele windows .NET, který cílí na Linux, wsL žije ve sladkém místě mezi produkční realitou a produktivitou. V sadě Visual Studio už můžete ladit ve vzdáleném linuxovém prostředí pomocí vzdáleného ladicího programu nebo pomocí kontejnerů pomocí nástrojů kontejneru. Když je produkční realismus vaším hlavním zájmem, měli byste použít jednu z těchto možností. Pokud je jednoduchá a rychlá vnitřní smyčka důležitější, je WSL skvělou volbou.
Nemusíte si vybírat jen jednu metodu! Ve stejném projektu můžete mít profil spuštění pro Docker a WSL a vybrat podle toho, která možnost je vhodná pro konkrétní spuštění. Jakmile je vaše aplikace nasazená, můžete k ní kdykoli použít vzdálený ladicí program, pokud dojde k problému. Pokud chcete ladit kontejner Dockeru s Linuxem spuštěným ve WSL, přečtěte si téma Připojení k procesu spuštěném v kontejneru Dockeru.
Poznámka:
Od sady Visual Studio 2019 verze 16.11 Preview 3 se cíl ladění WSL 2 přejmenoval na WSL.
Požadavky
Visual Studio 2019 v16.9 Preview 1 nebo novější verze s volitelnou komponentou .NET Debugging s wsL.
Pokud chcete zkontrolovat komponentu WSL, zvolte Nástroje>Získat nástroje a funkce. V Instalační program pro Visual Studio se ujistěte, že je komponenta nainstalována tak, že zvolíte kartu Jednotlivé komponenty a zadáte WSL jako hledaný termín.
V některých verzích sady Visual Studio je volitelná komponenta ve výchozím nastavení součástí některých úloh .NET.
Nainstalujte WSL.
Nainstalujte distribuci podle svého výběru.
Spuštění ladění pomocí WSL
Po instalaci požadovaných komponent otevřete webovou aplikaci ASP.NET Core nebo konzolovou aplikaci .NET Core v sadě Visual Studio. Zobrazí se nový profil spuštění s názvem WSL:
Vyberte tento profil a přidejte ho do launchSettings.json.
Některé klíčové atributy v souboru jsou uvedeny v následujícím příkladu.
Poznámka:
Od sady Visual Studio 2022 Preview 3 se název příkazu ve spouštěcím profilu změnil 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": "" }
Jakmile vyberete nový profil, rozšíření zkontroluje, jestli je vaše distribuce WSL nakonfigurovaná tak, aby spouštěla aplikace .NET, a pomůže vám nainstalovat všechny chybějící závislosti. Jakmile tyto závislosti nainstalujete, budete připraveni ladit ve WSL.
Spusťte ladění jako obvykle a vaše aplikace se spustí ve vaší výchozí distribuci WSL.
Snadný způsob, jak ověřit, že používáte Linux, je zkontrolovat hodnotu
Environment.OSVersion
.
Poznámka:
Testovali jsme pouze Ubuntu a Debian a podporují se. Ostatní distribuce podporované rozhraním .NET by měly fungovat, ale vyžadují ruční instalaci modulu runtime .NET a curl.
Volba konkrétní distribuce
Ve výchozím nastavení používá spouštěcí profil WSL 2 výchozí distribuci nastavenou v wsl.exe. Pokud chcete, aby váš spouštěcí profil cílil na konkrétní distribuci bez ohledu na výchozí nastavení, můžete upravit spouštěcí profil. Pokud například ladíte webovou aplikaci a chcete ji otestovat na Ubuntu 20.04, váš spouštěcí profil by vypadal takto:
"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"
}
Cílení na více distribucí
Pokud pracujete na aplikaci, která se musí spouštět v několika distribucích, a chcete rychle otestovat jednotlivé aplikace, můžete mít několik profilů spuštění. Pokud například potřebujete otestovat konzolovou aplikaci v Debianu, Ubuntu 18.04 a Ubuntu 20.04, můžete použít následující spouštěcí profily:
"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"
}
Díky těmto profilům spuštění můžete snadno přepínat mezi cílovými distribucemi a to vše bez nutnosti opustit pohodlí sady Visual Studio.
Připojení ke spuštěném procesu WSL
Kromě ladění od spuštění aplikace pomocí klávesy F5 můžete ladit připojením ke spuštěným procesům WSL pomocí funkce připojení k procesu.
Když je aplikace spuštěná, zvolte Připojit k procesu ladění>.
Jako typ připojení zvolte Subsystém Windows pro Linux (WSL) a pak zvolte distribuci Linuxu pro cíl připojení.
Zvolte Připojit.
Nastavení WSL v profilu spuštění
Následující tabulka ukazuje nastavení podporovaná v profilu spuštění.
Název | Výchozí | Účel | Podporuje tokeny? |
---|---|---|---|
spustitelný_soubor | dotnet | Spustitelný soubor ke spuštění | Ano |
commandLineArgs | Hodnota vlastnosti MSBuild TargetPath namapovaná na prostředí WSL | Argumenty příkazového řádku předané spustitelné cestě | Ano |
workingDirectory | Konzolové aplikace: {OutDir} Pro webové aplikace: {ProjectDir} |
Pracovní adresář, ve kterém se má spustit ladění | Ano |
environmentVariables | Páry hodnot klíče proměnných prostředí, které se mají nastavit pro laděný proces. | Ano | |
setupScriptPath | Skript, který se má spustit před laděním. Užitečné pro spouštění skriptů, jako je ~/.bash_profile. | Ano | |
distributionName | Název distribuce WSL, která se má použít. | No | |
launchBrowser | false (nepravda) | Zda nebo nespustíte prohlížeč | No |
launchUrl | Adresa URL, která se má spustit, pokud je launchBrowser pravdivá | No |
Podporované tokeny:
{ProjectDir} – cesta k adresáři projektu
{OutDir} – hodnota vlastnosti MSBuild OutDir
Poznámka:
Všechny cesty jsou určené pro WSL, nikoli windows.
Předání argumentu příkazového řádku
commandLineArgs
Pomocí nastavení předejte argument příkazového řádku WSL v profilu spuštění.
V následujícím příkladu předáte dva argumenty projektu knihovny DLL s názvem ConsoleApp.
"WSL": {
"commandName": "WSL",
"commandLineArgs": "\"{OutDir}/ConsoleApp.dll\" arg1 arg2"
}