Sdílet prostřednictvím


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

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

    Profil spuštění WSL v seznamu spouštěcích profilů

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

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

Více profilů spuštění WSL v seznamu spouštěcích profilů

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.

  1. Když je aplikace spuštěná, zvolte Připojit k procesu ladění>.

  2. Jako typ připojení zvolte Subsystém Windows pro Linux (WSL) a pak zvolte distribuci Linuxu pro cíl připojení.

  3. Zvolte Připojit.

    Snímek obrazovky s procesem WSL v dialogovém okně Připojit k procesu

    Snímek obrazovky s procesem WSL v dialogovém okně Připojit k procesu

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