Felsöka .NET-appar i WSL med Visual Studio
Du kan enkelt köra och felsöka dina .NET Core- och .NET 5+-appar i Linux utan att lämna Visual Studio med hjälp av Windows Undersystem för Linux (WSL). Om du är plattformsoberoende utvecklare kan du använda den här metoden som ett enkelt sätt att testa fler av dina målmiljöer.
För en Windows .NET-användare som riktar in sig på Linux befinner sig WSL i ett idealiskt läge mellan produktionsrealism och produktivitet. I Visual Studio kan du redan felsöka i en fjärransluten Linux-miljö med hjälp av fjärrfelsökareneller med containrar med hjälp av Container Tools. När produktionsrealism är ditt huvudsakliga intresse bör du använda något av dessa alternativ. När en enkel och snabb inre loop är viktigare är WSL ett bra alternativ.
Du behöver inte bara välja en metod! Du kan ha en startprofil för Docker och WSL i samma projekt och välja det som är lämpligt för en viss körning. Och när appen har distribuerats kan du alltid använda fjärrfelsökaren för att ansluta till den om det finns ett problem. Information om hur du felsöker en Linux Docker-container som körs i WSL finns i Koppla till en process som körs på en Docker-container.
Obs
Från och med Visual Studio 2019 version 16.11 Preview 3 bytte WSL 2-felsökningsmålet namn till WSL.
Förutsättningar
Visual Studio 2019 v16.9 Förhandsversion 1 eller senare med .NET-felsökning med valfri WSL-komponent.
Om du vill söka efter WSL-komponenten väljer du Verktyg>Hämta verktyg och funktioner. I Visual Studio Installer kontrollerar du att komponenten är installerad genom att välja fliken Enskilda komponenter och skriva WSL- som sökterm.
I vissa versioner av Visual Studio ingår den valfria komponenten som standard med några av .NET-arbetsbelastningarna.
Installera WSL-.
Börja felsöka med WSL
När du har installerat de komponenter som krävs öppnar du en ASP.NET Core-webbapp eller .NET Core-konsolapp i Visual Studio. En ny startprofil med namnet WSL visas:
Välj den här profilen för att lägga till den i din launchSettings.json.
Några av nyckelattributen i filen visas i följande exempel.
Not
Från och med Visual Studio 2022 Preview 3 ändrades kommandonamnet i startprofilen från WSL2 till 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": "" }
När du har valt den nya profilen kontrollerar tillägget att WSL-distributionen är konfigurerad för att köra .NET-appar och hjälper dig att installera eventuella beroenden som saknas. När du har installerat dessa beroenden är du redo att felsöka i WSL.
Börja felsöka som vanligt så körs din app i din standard-WSL-distribution.
Ett enkelt sätt att kontrollera att du kör i Linux är att kontrollera värdet för
Environment.OSVersion
.
Not
Endast Ubuntu och Debian har testats och stöds. Andra distributioner som stöds av .NET bör fungera men kräver manuellt installation av .NET Runtime- och Curl.
Välj en specifik distribution
Som standard använder WSL 2-startprofilen standardfördelningen enligt wsl.exe. Om du vill att startprofilen ska rikta in sig på en specifik distribution, oavsett standardinställning, kan du ändra startprofilen. Om du till exempel felsöker en webbapp och vill testa den på Ubuntu 20.04 ser startprofilen ut så här:
"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"
}
Rikta in sig på flera distributioner
Om du arbetar med ett program som behöver köras i flera distributioner och vill ha ett snabbt sätt att testa på var och en av dem kan du ha flera startprofiler. Om du till exempel behöver testa konsolappen på Debian, Ubuntu 18.04 och Ubuntu 20.04 kan du använda följande startprofiler:
"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"
}
Med de här startprofilerna kan du enkelt växla fram och tillbaka mellan dina måldistributioner, allt utan att lämna visual studiokomforten.
Ansluta till en WSL-process som körs
Förutom felsökning från appstart med hjälp av F5 kan du felsöka genom att ansluta till en WSL-process som körs med hjälp av funktionen koppla till process.
När appen körs väljer du Debug>Attach to Process.
För Anslutningstypväljer du Windows-undersystem för Linux (WSL)och väljer sedan Linux-distributionen för -anslutningsmålet.
Välj Bifoga.
WSL-inställningar i startprofilen
I följande tabell visas de inställningar som stöds i startprofilen.
Namn | Förvald | Avsikt | Finns det stöd för tokens? |
---|---|---|---|
executablePath | dotnet | Den körbara fil som ska köras | Ja |
commandLineArgs | Värdet för egenskapen MSBuild TargetPath som mappats till WSL-miljön | Kommandoradsargument som skickas till executablePath | Ja |
workingDirectory | För konsolappar: {OutDir} För webbappar: {ProjectDir} |
Arbetskatalogen där du kan börja felsöka | Ja |
miljövariabler | Nyckelvärdepar med miljövariabler som ska anges för den debuggade processen. | Ja | |
setupScriptPath | Skript som ska köras före felsökning. Användbart för att köra skript som ~/.bash_profile. | Ja | |
distributionName | Namnet på den WSL-distribution som ska användas. | Nej | |
starta webbläsare | falsk | Om du vill starta en webbläsare eller inte | Nej |
launchUrl | URL för att öppna om launchBrowser är aktiverad | Nej |
Token som stöds:
{ProjectDir} – Sökvägen till projektkatalogen
{OutDir} – värdet för egenskapen MSBuild OutDir
Notera
Alla sökvägar är för WSL, inte Windows.
Skicka ett kommandoradsargument
Använd inställningen commandLineArgs
för att skicka ett kommandoradsargument till WSL i startprofilen.
I följande exempel skickar du två argument till ett DLL-projekt med namnet ConsoleApp.
"WSL": {
"commandName": "WSL",
"commandLineArgs": "\"{OutDir}/ConsoleApp.dll\" arg1 arg2"
}