.NET-alkalmazások hibakeresése a WSL-ben a Visual Studióval

A .NET Core- és .NET 5+-alkalmazások linuxos futtatása és hibakeresése egyszerűen elvégezhető anélkül, hogy elhagyná a Visual Studiót a Windows Subsystem for Linux (WSL) használatával. Platformfüggetlen fejlesztőként ezt a módszert egyszerű módszerként használhatja a célkörnyezetek további tesztelésére.

A Linux rendszert célzó Windows .NET-felhasználók számára a WSL az ideális egyensúlyt képviseli a valóság és a termelékenység között. A Visual Studióban már hibakeresést végezhet távoli Linux-környezetben a távoli hibakeresővagy a tárolókkal a Container Toolshasználatával. Ha a termelési realizmus a legfontosabb szempont, használja az egyik ilyen lehetőséget. Ha egy egyszerű és gyors belső hurok fontosabb, a WSL nagyszerű lehetőség.

Nem kell egyetlen módszert választania! Ugyanabban a projektben rendelkezhet a Docker és a WSL indítási profiljával, és kiválaszthatja, hogy melyik megfelelő egy adott futtatáshoz. Az alkalmazás üzembe helyezése után bármikor csatlakoztathatja a távoli hibakeresőt, ha probléma merül fel. A WSL-ben futó Linux Docker-tároló hibakereséséhez lásd: Csatolás docker-tárolón futó folyamathoz.

Jegyzet

A Visual Studio 2019 16.11-es verziójától kezdve a WSL 2 hibakeresési cél wSL-re lett átnevezve.

Előfeltételek

  • A Visual Studio 2019 16.9-es vagy újabb verziói a WSL opcionális összetevővel rendelkező .NET-hibakereséssel.

    A WSL-összetevő kereséséhez válassza az Eszközök>Szolgáltatások és eszközök lekéréselehetőséget. A Visual Studio Installerben győződjön meg arról, hogy az összetevő telepítve van, válassza az Egyes összetevők fület, és keresési kifejezésként írja be a WSL nevet.

    A Visual Studio egyes verzióiban alapértelmezés szerint az opcionális összetevő szerepel néhány .NET-számítási feladatban.

  • Telepítse WSL-.

  • Telepítse a választott terjesztési.

Hibakeresés indítása a WSL használatával

  1. Miután telepítette a szükséges összetevőket, nyisson meg egy ASP.NET Core-webalkalmazást vagy .NET Core-konzolalkalmazást a Visual Studióban. Ekkor megjelenik egy WSL nevű új indítási profil:

    WSL-indítási profil az indítási profilok listájában

  2. Válassza ki ezt a profilt, hogy hozzáadja a launchSettings.json-höz.

    A fájl néhány fő attribútuma az alábbi példában látható.

    Jegyzet

    A Visual Studio 2022 Preview 3-tól kezdve a Launch Profile parancsneve WSL2-ről WSL-re változott.

    "WSL": {
        "commandName": "WSL",
        "launchBrowser": true,
        "launchUrl": "https://localhost:5001",
        "environmentVariables": {
            "ASPNETCORE_URLS": "https://localhost:5001;http://localhost:5000",
            "ASPNETCORE_ENVIRONMENT": "Development"
        },
        "distributionName": ""
    }
    

    Az új profil kiválasztása után a bővítmény ellenőrzi, hogy a WSL-disztribúció a .NET-alkalmazások futtatására van-e konfigurálva, és segít a hiányzó függőségek telepítésében. Miután telepítette ezeket a függőségeket, készen áll a WSL hibakeresésére.

  3. Kezdje el a hibakeresést a szokásos módon, és az alkalmazás az alapértelmezett WSL-disztribúcióban fog futni.

    A linuxos futtatás ellenőrzésének egyszerű módja a Environment.OSVersionértékének ellenőrzése.

Jegyzet

Csak az Ubuntu és a Debian lett tesztelve, és támogatottak. A .NET által támogatott egyéb disztribúcióknak működnie kell, de manuálisan kell telepíteni a .NET futtatókörnyezeti és Curl.

Adott disztribúció kiválasztása

Alapértelmezés szerint a WSL 2 indítási profilja az alapértelmezett eloszlást használja a wsl.exe. Ha azt szeretné, hogy az indítási profil egy adott disztribúcióra irányuljon, az alapértelmezetttől függetlenül módosíthatja az indítási profilt. Ha például egy webalkalmazást hibakeres, és az Ubuntu 20.04-en szeretné tesztelni, az indítóprofil valahogy így nézne ki:

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

Több disztribúció megcélzása

Egy lépéssel tovább haladva, ha olyan alkalmazáson dolgozik, amelyet több disztribúcióban kell futtatnia, és gyorsan szeretné tesztelni őket, több indítási profillal is rendelkezhet. Ha például a konzolalkalmazást Debian, Ubuntu 18.04 és Ubuntu 20.04 rendszeren kell tesztelnie, a következő indítási profilokat használhatja:

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

Ezekkel az indítási profilokkal egyszerűen válthat oda-vissza a céleloszlások között anélkül, hogy a Visual Studio kényelmét elhagyná.

Képernyőkép több WSL-indítási profilról az indítási profilok listájában.

Több WSL-indítási profil található az indítási profilok listáján

Csatlakozz egy futó WSL-folyamathoz

Az F5 használatával végzett alkalmazásindítási hibakeresés mellett hibakeresést is végezhet, ha a csatolás funkcióval csatlakozik egy futó WSL-folyamathoz.

  1. Ha az alkalmazás fut, válassza a Hibakeresési>Csatolás a folyamathozlehetőséget.

  2. A kapcsolattípust válassza a Windows Subsystem for Linux (WSL) lehetőséget, majd válassza ki a Linux-disztribúciót a kapcsolat célpontja-ként.

  3. Válassza a Csatoláslehetőséget.

    WSL-folyamat képernyőképe a Folyamat csatolása párbeszédpanelen.

WSL-beállítások az indítási profilban

Az alábbi táblázat az indítási profilban támogatott beállításokat mutatja be.

Név Alapértelmezett Cél Támogatja a tokeneket?
executablePath dotnet A futtatandó végrehajtható fájl Igen
commandLineArgs A WSL-környezethez hozzárendelt MSBuild tulajdonság TargetPath értéke A végrehajthatópathnak átadott parancssori argumentumok Igen
workingDirectory Konzolalkalmazások esetén: {OutDir}
Webalkalmazásokhoz: {ProjectDir}
A munkakönyvtár, amelyben a hibakeresést el kell kezdeni Igen
környezeti változók A hibakeresési folyamathoz beállított környezeti változók kulcsértékpárjai. Igen
setupScriptPath A hibakeresés előtt futtatandó szkript. Olyan szkriptek futtatásához hasznos, mint a ~/.bash_profile. Igen
elosztásNeve A használni kívánt WSL-eloszlás neve. Nem
böngészőindítás téves Indítsuk-e el a böngészőt vagy sem? Nem
launchUrl Az indításhoz szükséges URL-cím, ha a launchBrowser igaz Nem

Támogatott tokenek:

{ProjectDir} – A projektkönyvtár elérési útja

{OutDir} – Az MSBuild tulajdonság értéke OutDir

Jegyzet

Az összes elérési út a WSL-hez van adva, nem a Windowshoz.

Parancssori argumentum megadása

A commandLineArgs beállítással parancssori argumentumot adhat át a WSL-nek az indítási profilban.

Az alábbi példában két argumentumot ad át egy ConsoleApp nevű DLL-projektnek.

"WSL": {
  "commandName": "WSL",
  "commandLineArgs": "\"{OutDir}/ConsoleApp.dll\" arg1 arg2"
}

Konzolalkalmazások

A WSL-ben futó konzolalkalmazások esetében a rendszer átirányítja a standard bemeneti adatfolyamot (stdin), és nincs mód bemenet megadására. Bemenetet igénylő konzolalkalmazás hibakeresésekor indítsa el az alkalmazást közvetlenül a WSL-ből dotnet run , és adja meg a DLL elérési útját a Windowson. Ez hozzáférést biztosít az stdinhez, mert az alkalmazás a Linux-konzolon fut. A hibakereséshez használja az Csatolás futó WSL-folyamathoz című szakaszban leírt utasításokat.

Távoli hibakeresési egységtesztek

Ha távolról szeretné hibakeresésre használni az egységteszteket a WSL-ben, meg kell adnia a tesztkörnyezetet testEnvironments.json. További információ: Helyi WSL 2 kapcsolatok.