Dela via


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-.

  • Installera den distribution du väljer.

Börja felsöka med WSL

  1. 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:

    WSL-startprofil i startprofillistan

  2. 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.

  3. 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.

flera WSL-startprofiler i startprofillistan

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.

  1. När appen körs väljer du Debug>Attach to Process.

  2. För Anslutningstypväljer du Windows-undersystem för Linux (WSL)och väljer sedan Linux-distributionen för -anslutningsmålet.

  3. Välj Bifoga.

    Skärmbild av WSL-processen i dialogrutan bifoga till process.

    Skärmbild av WSL-processen i dialogrutan bifoga till process.

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"
}