Fouten opsporen in .NET-apps in WSL met Visual Studio
U kunt uw .NET Core- en .NET 5+-apps eenvoudig uitvoeren en fouten opsporen in Linux zonder Visual Studio te verlaten met behulp van het Windows-subsysteem voor Linux (WSL). Als u een platformoverschrijdende ontwikkelaar bent, kunt u deze methode gebruiken als een eenvoudige manier om meer van uw doelomgevingen te testen.
Voor een Windows .NET-gebruiker die gericht is op Linux, bevindt WSL zich op een zoete plek tussen productie-realisme en productiviteit. In Visual Studio kunt u al fouten opsporen in een externe Linux-omgeving met behulp van het externe foutopsporingsprogrammaof met containers met behulp van de Container Tools-. Wanneer productie-realisme uw belangrijkste probleem is, moet u een van deze opties gebruiken. Als een eenvoudige en snelle interne loop belangrijker is, is WSL een uitstekende optie.
U hoeft niet slechts één methode te kiezen. U kunt een startprofiel voor Docker en WSL in hetzelfde project hebben en kiezen wat geschikt is voor een bepaalde uitvoering. Zodra uw app is geïmplementeerd, kunt u altijd de externe debugger gebruiken om ermee verbinding te maken als er een probleem is. Als u fouten wilt opsporen in een Linux Docker-container die wordt uitgevoerd in WSL, raadpleegt u Koppelen aan een proces dat wordt uitgevoerd op een Docker-container.
Notitie
Vanaf Visual Studio 2019 versie 16.11 Preview 3 is de naam van het WSL 2-foutopsporingsdoel gewijzigd in WSL.
Voorwaarden
Visual Studio 2019 v16.9 Preview 1 of hoger met de .NET-foutopsporing met een optioneel WSL-onderdeel.
Als u het WSL-onderdeel wilt controleren, kiest u Tools>Tools en functies ophalen. Zorg ervoor dat het onderdeel is geïnstalleerd in het Visual Studio-installatieprogramma door tabblad Afzonderlijke onderdelen te kiezen en WSL- als zoekterm te typen.
In sommige versies van Visual Studio wordt het optionele onderdeel standaard opgenomen in sommige .NET-workloads.
Installeer WSL-.
Installeer de distributie van uw keuze.
Start foutopsporing met WSL
Nadat u de vereiste onderdelen hebt geïnstalleerd, opent u een ASP.NET Core-web-app of .NET Core-console-app in Visual Studio. U ziet een nieuw startprofiel met de naam WSL:
Selecteer dit profiel om het toe te voegen aan uw launchSettings.json.
Sommige sleutelkenmerken in het bestand worden weergegeven in het volgende voorbeeld.
Notitie
Vanaf Visual Studio 2022 Preview 3 is de opdrachtnaam in het startprofiel gewijzigd van WSL2 in 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": "" }
Zodra u het nieuwe profiel selecteert, controleert de extensie of uw WSL-distributie is geconfigureerd voor het uitvoeren van .NET-apps en helpt u bij het installeren van ontbrekende afhankelijkheden. Nadat u deze afhankelijkheden hebt geïnstalleerd, kunt u fouten opsporen in WSL.
Start de foutopsporing als normaal en uw app wordt uitgevoerd in uw standaard-WSL-distributie.
Een eenvoudige manier om te controleren of u in Linux werkt, is door de waarde van
Environment.OSVersion
te controleren.
Notitie
Alleen Ubuntu en Debian zijn getest en worden ondersteund. Andere distributies die door .NET worden ondersteund, moeten werken, maar moeten de .NET Runtime- en Curl-handmatig installeren.
Een specifieke distributie kiezen
Standaard gebruikt het startprofiel van WSL 2 de standaarddistributie die is ingesteld in wsl.exe. Als u wilt dat uw startprofiel zich richt op een specifieke distributie, ongeacht die standaardinstelling, kunt u uw startprofiel wijzigen. Als u bijvoorbeeld fouten in een web-app opspoort en deze wilt testen op Ubuntu 20.04, ziet uw startprofiel er als volgt uit:
"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"
}
Meerdere distributies targeten
Als u nog een stap verder gaat met een toepassing die in meerdere distributies moet worden uitgevoerd en u snel wilt testen op elk van deze distributies, kunt u meerdere startprofielen hebben. Als u bijvoorbeeld uw console-app wilt testen op Debian, Ubuntu 18.04 en Ubuntu 20.04, kunt u de volgende startprofielen gebruiken:
"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"
}
Met deze lanceringsprofielen kunt u eenvoudig heen en weer schakelen tussen uw doeldistributies, allemaal zonder het comfort van Visual Studio te verlaten.
Koppelen aan een draaiend WSL-proces
Naast debuggen vanaf het opstarten van een app met F5, kunt u ook debuggen door een actief WSL-proces te koppelen met behulp van de functie Proces koppelen.
Terwijl de app wordt uitgevoerd, kiest u Foutopsporing>Koppelen aan proces.
Kies voor het verbindingstypeWindows-subsysteem voor Linux (WSL)en kies vervolgens de Linux-distributie voor het Verbindingsdoel.
Kies , voegbij.
WSL-instellingen in het startprofiel
In de volgende tabel ziet u de instellingen die worden ondersteund in het startprofiel.
Naam | Verstek | Doel | Ondersteunt tokens? |
---|---|---|---|
executablePath | dotnet | Het uitvoerbare bestand dat moet worden uitgevoerd | Ja |
commandline-argumenten | De waarde van de MSBuild-eigenschap TargetPath die is toegewezen aan de WSL-omgeving | Opdrachtregelargumenten doorgegeven aan executablePath | Ja |
workingDirectory | Voor console-apps: {OutDir} Voor web-apps: {ProjectDir} |
De werkmap waarin debugging moet worden gestart | Ja |
omgevingvariabelen | Sleutelwaardeparen van omgevingsvariabelen die moeten worden ingesteld voor het foutopsporingsproces. | Ja | |
setupScriptPath | Script dat moet worden uitgevoerd vóór foutopsporing. Handig voor het uitvoeren van scripts zoals ~/.bash_profile. | Ja | |
distributionName | De naam van de WSL-distributie die moet worden gebruikt. | Nee | |
launchBrowser | vals | Of u een browser al dan niet wilt starten | Nee |
launchUrl | URL om te starten indien launchBrowser waar is | Nee |
Ondersteunde tokens:
{ProjectDir} - Het pad naar de projectmap
{OutDir} - De waarde van de eigenschap MSBuild OutDir
Notitie
Alle paden zijn voor WSL, niet voor Windows.
Een opdrachtregelargument doorgeven
Gebruik de instelling commandLineArgs
om een opdrachtregelargument door te geven aan WSL in het startprofiel.
In het volgende voorbeeld geeft u twee argumenten door aan een DLL-project met de naam ConsoleApp.
"WSL": {
"commandName": "WSL",
"commandLineArgs": "\"{OutDir}/ConsoleApp.dll\" arg1 arg2"
}