Visual Studio ile WSL'de .NET Uygulamalarında Hata Ayıklama
Linux için Windows Alt Sistemi'ni (WSL) kullanarak Visual Studio'dan çıkmadan Linux'ta .NET Core ve .NET 5+ uygulamalarınızı kolayca çalıştırabilir ve hatalarını ayıklayabilirsiniz. Platformlar arası bir geliştiriciyseniz, hedef ortamlarınızın daha fazlasını test etmek için basit bir yol olarak bu yöntemi kullanabilirsiniz.
Linux'u hedefleyen bir Windows .NET kullanıcısı için WSL, üretim gerçekçiliği ile üretkenlik arasında tatlı bir noktada yaşar. Visual Studio'da, uzak hata ayıklayıcısını kullanarak veya kapsayıcılarla Container Toolskullanarak uzak Linux ortamında zaten hata ayıklayabilirsiniz. Asıl endişeniz üretim gerçekçiliği olduğunda, bu seçeneklerden birini kullanmalısınız. Kolay ve hızlı bir iç döngü daha önemli olduğunda, WSL harika bir seçenektir.
Tek bir yöntem seçmeniz gerekmez! Aynı projede Docker ve WSL için bir başlatma profiliniz olabilir ve belirli bir çalıştırma için uygun olanı seçebilirsiniz. Uygulamanız dağıtıldığında, bir sorun olduğunda her zaman uzaktan hata ayıklayıcıyı kullanarak uygulamaya bağlanabilirsiniz. WSL'de çalışan bir Linux Docker kapsayıcısında hata ayıklamak için bkz. Docker kapsayıcısında çalışan bir işleme ekleme.
Not Düş
Visual Studio 2019 sürüm 16.11 Preview 3'den başlayarak WSL 2 hata ayıklama hedefi WSL olarak yeniden adlandırıldı.
Önkoşullar
Visual Studio 2019 v16.9 Preview 1 veya sonraki sürümleri, WSL ile .NET Hata Ayıklama isteğe bağlı bileşeniyle birlikte.
Araçlar>Araçları ve Özellikleri Alöğesini seçerek WSL bileşenini kontrol edin. Visual Studio Yükleyicisi'nde tek tek bileşenler sekmesine seçip arama terimi olarak WSL yazarak bileşenin yüklendiğinden emin olun.
Visual Studio'nun bazı sürümlerinde, isteğe bağlı bileşen varsayılan olarak bazı .NET iş yüklerine eklenir.
WSLyükleyin.
seçtiğiniz dağıtım yükleyin.
WSL ile hata ayıklamaya başlama
Gerekli bileşenleri yükledikten sonra Visual Studio'da bir ASP.NET Core web uygulaması veya .NET Core konsol uygulaması açın WSL adlı yeni bir Başlatma Profili görürsünüz:
Başlatma profili listesinde
launchSettings.json'nize eklemek için bu profili seçin.
Dosyadaki bazı anahtar öznitelikler aşağıdaki örnekte gösterilmiştir.
Not
Visual Studio 2022 Preview 3'ten başlayarak, Başlatma Profili'ndeki komut adı WSL2'den WSL'ye değiştirildi.
"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": "" }
Yeni profili seçtiğinizde uzantı, WSL dağıtımınızın .NET uygulamalarını çalıştıracak şekilde yapılandırılıp yapılandırılmadığını denetler ve eksik bağımlılıkları yüklemenize yardımcı olur. Bu bağımlılıkları yükledikten sonra WSL'de hata ayıklamaya hazırsınız.
Hata ayıklamayı normal şekilde başlattığınızda uygulamanız varsayılan WSL dağıtımınızda çalışır.
Linux'ta çalıştırdığınızı doğrulamanın kolay bir yolu
Environment.OSVersion
değerini denetlemektir.
Not
Yalnızca Ubuntu ve Debian test edilmiştir ve desteklenir. .NET tarafından desteklenen diğer dağıtımlar çalışmalıdır, ancak .NET Çalışma Zamanı el ile yüklenmesini ve Curl gerektirir.
Belirli bir dağıtımı seçme
Varsayılan olarak, WSL 2 başlatma profili wsl.exe'de ayarlandığı gibi varsayılan dağıtımı kullanır. Başlatma profilinizin belirli bir dağıtımı hedeflemesini istiyorsanız, bu varsayılandan bağımsız olarak başlatma profilinizi değiştirebilirsiniz. Örneğin, bir web uygulamasında hata ayıklarken Ubuntu 20.04'te test etmek istiyorsanız başlatma profiliniz şöyle görünü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"
}
Birden çok dağıtımı hedefleme
Bir adım daha ileri giderek, birden çok dağıtımda çalışması gereken bir uygulama üzerinde çalışıyorsanız ve bunların her birini test etmek için hızlı bir yol istiyorsanız, birden çok başlatma profiliniz olabilir. Örneğin, konsol uygulamanızı Debian, Ubuntu 18.04 ve Ubuntu 20.04'te test etmeniz gerekiyorsa aşağıdaki başlatma profillerini kullanabilirsiniz:
"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"
}
Bu başlatma profilleriyle, Visual Studio'nun rahatlığını bırakmadan hedef dağıtımlarınız arasında kolayca geçiş yapabilirsiniz.
Başlatma profili listesinde birden fazla WSL başlatma profili
Çalışan bir WSL işlemine ekleme
F5 kullanarak uygulama başlangıcından hata ayıklamaya ek olarak, işleme ekleme özelliğini kullanarak çalışan bir WSL işlemine ekleyerek hata ayıklayabilirsiniz.
Uygulama çalışırken hata ayıklama>İşleme Bağlanöğesini seçin.
Bağlantı türü için Linux için Windows Alt Sistemi (WSL) seçin ve ardından Bağlantı hedefiiçin Linux dağıtımını seçin.
seçekle.
Başlatma profilindeki WSL ayarları
Aşağıdaki tabloda başlatma profilinde desteklenen ayarlar gösterilmektedir.
İsim | Varsayılan | Amaç | Belirteçleri destekler mi? |
---|---|---|---|
yürütülebilir dizin | dotnet | Çalıştırılacak yürütülebilir dosya | Evet |
commandLineArgs | WSL ortamıyla eşlenen MSBuild özelliğinin TargetPath değeri | Yürütülebilir dosya yoluna geçirilen komut satırı argümanları | Evet |
çalışmaDizini | Konsol uygulamaları için: {OutDir} Web uygulamaları için: {ProjectDir} |
Hata ayıklamanın başlatıldığı çalışma dizini | Evet |
çevre değişkenleri | Hata ayıklama işlemi için ayarlanacak ortam değişkenlerinin Anahtar Değer çiftleri. | Evet | |
setupScriptPath | Hata ayıklama öncesi çalıştırılacak betik. ~/.bash_profile gibi betikleri çalıştırmak için kullanışlıdır. | Evet | |
dağıtımAdı | Kullanılacak WSL dağıtımının adı. | Hayır | |
tarayıcıyı başlat | yanlış | Tarayıcı başlatılıp başlatılmaması | Hayır |
launchUrl | launchBrowser doğruysa başlatma URL'si | Hayır |
Desteklenen belirteçler:
{ProjectDir} - Proje dizininin yolu
{OutDir} - MSBuild özelliğinin değeri OutDir
Not
Bütün yollar WSL içindir, Windows için değildir.
Komut satırı bağımsız değişkeni geçirin
Başlatma profilinde WSL'ye bir komut satırı bağımsız değişkeni geçirmek için commandLineArgs
ayarını kullanın.
Aşağıdaki örnekte, ConsoleApp adlı bir DLL projesine iki bağımsız değişken geçirirsiniz.
"WSL": {
"commandName": "WSL",
"commandLineArgs": "\"{OutDir}/ConsoleApp.dll\" arg1 arg2"
}