Aracılığıyla paylaş


Visual Studio ile WSL'de .NET Uygulamalarında Hata Ayıklama

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 uzak linux ortamında veya Kapsayıcı Araçları'nı kullanarak kapsayıcılarda 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ıktan sonra, bir sorun varsa her zaman uzaktan hata ayıklayıcıyı kullanarak bu hata ayıklayıcıya ekleyebilirsiniz.

Not

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

    WSL bileşenini denetlemek için Araçlar Araçları>ve Özellikleri Al'ı seçin. Visual Studio Yükleyicisi Tek tek bileşenler sekmesini 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.

  • WSL'yi yükleyin.

  • Seçtiğiniz dağıtımı yükleyin.

WSL ile hata ayıklamaya başlama

  1. 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 listesindeki WSL başlatma profili

  2. Bu profili seçerek başlatma Ayarlar.json ekleyin.

    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.

  3. 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 değerini Environment.OSVersiondenetlemektir.

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ı ve Curl'in el ile yüklenmesini gerektirir.

Belirli bir dağıtımı seçme

Varsayılan olarak, WSL 2 başlatma profili wsl.exe'da 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 çok 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.

  1. Uygulama çalışırken İşleme Ekleme Hatalarını Ayıkla'yı>seçin.

  2. Bağlan türü için Linux için Windows Alt Sistemi (WSL) öğesini seçin ve ardından Bağlan ion hedefi için Linux dağıtımını seçin.

  3. Ekle'yi seçin.

    İşleme ekle iletişim kutusundaki WSL işleminin ekran görüntüsü

Başlatma profilindeki WSL ayarları

Aşağıdaki tabloda başlatma profilinde desteklenen ayarlar gösterilmektedir.

Veri Akışı Adı Varsayılan Purpose Belirteçleri destekler mi?
yürütülebilir Yol dotnet Çalıştırılacak yürütülebilir dosya Yes
commandLineArgs WSL ortamıyla eşlenen MSBuild özelliğinin TargetPath değeri Yürütülebilir Yol'a geçirilen komut satırı bağımsız değişkenleri Yes
Workingdirectory Konsol uygulamaları için: {OutDir}
Web uygulamaları için: {ProjectDir}
Hata ayıklamanın başlatıldığı çalışma dizini Yes
environmentVariables Hata ayıklama işlemi için ayarlanacak ortam değişkenlerinin Anahtar Değer çiftleri. Yes
setupScriptPath Hata ayıklamadan önce çalıştırılacak betik. ~/.bash_profile gibi betikleri çalıştırmak için kullanışlıdır. Yes
distributionName Kullanılacak WSL dağıtımının adı. Hayır
launchBrowser 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

Tüm yollar Windows için değil WSL içindir.

Komut satırı bağımsız değişkenlerini geçirme

Başlatma profilinde commandLineArgs WSL'ye bir komut satırı bağımsız değişkeni geçirmek için 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"
}