Eseguire il debug del codice sorgente di .NET e ASP.NET Core con Visual Studio

Per eseguire il debug di .NET e ASP.NET codice sorgente Core in Visual Studio:

  • In Strumenti -> Opzioni -> Debug -> Generale, deselezionare l'opzione Abilita solo il codice personale.

    Abilita Just My Code

  • Verificare che Enable Source Link support sia selezionata.

    Abilitare il supporto per Source Link

  • In Strumento -> Opzioni -> Debugging -> Simboli, abilitare Microsoft Symbol Servers.

    Server dei simboli Microsoft

Quando si entra in un qualsiasi codice .NET o ASP.NET Core, Visual Studio visualizza il codice sorgente. Ad esempio:

  • Impostare un punto di interruzione in OnGet in Pages/Privacy.cshtml.cs e selezionare il collegamento Privacy.

  • Selezionare una delle opzioni Scarica il codice sorgente e continua il debug.

    Il link verrà scaricato

Le istruzioni precedenti funzionano per entrare nelle funzioni durante il debug di base, ma il codice .NET ottimizzato spesso rimuove variabili locali e funzioni. Per disabilitare le ottimizzazioni e consentire un debug di origine migliore:

  • In Strumenti -> Opzioni -> Debug -> Generale, abilitare Disabilita l'ottimizzazione JIT al caricamento del modulo (solo gestito): Disabilita l'ottimizzazione JIT al caricamento del modulo
  • Aggiungere la variabile di ambiente e il valore COMPlus_ReadyToRun=0 nel file Properties/launchSettings.json:
    {
      "iisSettings": {
        "windowsAuthentication": false,
        "anonymousAuthentication": true,
        "iisExpress": {
          "applicationUrl": "http://localhost:10892",
          "sslPort": 44315
        }
      },
      "profiles": {
        "WebApplication18": {
          "commandName": "Project",
          "dotnetRunMessages": true,
          "launchBrowser": true,
          "applicationUrl": "https://localhost:7045;http://localhost:5045",
          "environmentVariables": {
            "ASPNETCORE_ENVIRONMENT": "Development",
            "COMPlus_ReadyToRun": "0"
          }
        },
        "IIS Express": {
          "commandName": "IISExpress",
          "launchBrowser": true,
          "environmentVariables": {
            "ASPNETCORE_ENVIRONMENT": "Development",
            "COMPlus_ReadyToRun": "0"
          }
        }
      }
    }
    

Se è stato eseguito il debug di un'app prima con la versione precedente di .NET, eliminare la %TEMP%/SymbolCache directory in quanto può avere vecchi PDB non aggiornati.

Debug di .NET Core su Unix tramite SSH