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

  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:

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

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

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

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.

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

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

  3. Zvolte Připojit.

    Snímek obrazovky procesu WSL v dialogovém okně připojení k procesu

    Snímek obrazovky procesu WSL v dialogovém okně připojení k procesu

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