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ému 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, je WSL ideálním kompromisem mezi produkční realitou a produktivitou. V sadě Visual Studio již můžete ladit ve vzdáleném linuxovém prostředí pomocí vzdáleného ladicího programunebo pomocí kontejnerů pomocí nástroje Container Tools. 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ý debugger, pokud dojde k problému. Pokud chcete ladit linuxový kontejner Docker spuštěný ve WSL, podívejte se na Připojení k procesu běžícímu v kontejneru Docker.
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.
Chcete-li zkontrolovat komponentu WSL, zvolte Nástroje>Získat nástroje a funkce. V instalačním programu sady Visual Studio se ujistěte, že je komponenta nainstalovaná tím, že zvolíte kartu Jednotlivé komponenty a jako vyhledávací termín zadáte WSL.
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.
Zahájit 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. Jiné distribuce podporované rozhraním .NET by měly fungovat, ale vyžadují ruční instalaci .NET Runtime a Curl.
Volba konkrétní distribuce
Ve výchozím nastavení profil spuštění WSL 2 používá 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ému 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 Ladění>Připojit k procesu.
Jako Typ připojenízvolte Subsystém Windows pro Linux (WSL) a pak zvolte distribuci Linuxu pro cíle připojení.
Zvolte Připojit.
Nastavení WSL ve spouštěcím profilu
Následující tabulka ukazuje nastavení podporovaná v profilu spuštění.
Jméno | Výchozí | Účel | Podporuje tokeny? |
---|---|---|---|
cesta_ke_spustitelnému_souboru | dotnet | Spustitelný soubor | Ano |
commandLineArgs | Hodnota vlastnosti MSBuild TargetPath namapovaná na prostředí WSL | Argumenty příkazového řádku předané spustitelné cestě | Ano |
workingDirectory | Pro konzolové aplikace: {OutDir} Pro webové aplikace: {ProjectDir} |
Pracovní adresář, ve kterém se má spustit ladění | Ano |
proměnné prostředí | 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. | Ne | |
spustitProhlížeč | falešný | Zda nebo nespustíte prohlížeč | Ne |
launchUrl | Adresa URL, která se má spustit, pokud je launchBrowser pravdivá | Ne |
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
Pomocí nastavení commandLineArgs
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"
}