Eseguire il debug di .NET e ASP.NET codice sorgente 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 Abilita Just My Code.

    Abilitare Just My Code

  • Verificare che l'opzione Enable Source Link support (Abilita supporto collegamento origine) sia selezionata.

    Abilitare il supporto del collegamento di origine

  • In Strumento -> Opzioni -> Debug -> Simboli abilitare i server di simboli Microsoft.

    Server simboli Microsoft

Quando si esegue l'istruzione in qualsiasi codice .NET o ASP.NET Core, Visual Studio visualizza il codice sorgente. Ad esempio:

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

  • Selezionare una delle opzioni Scarica origine e Continua debug .

    Il collegamento di origine verrà scaricato

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

  • In Strumenti - Opzioni - Debug - Generale abilitare Elimina ottimizzazione JIT al caricamento del modulo (solo gestito):In Tools -> Options -> Debugging -> General ,enable Suppress JIT optimization on module load (Managed only):Eliminare l'ottimizzazione JIT al caricamento del modulo
  • Aggiungere la variabile di ambiente e il valore COMPlus_ReadyToRun=0 al Properties/launchSettings.json file:
    {
      "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 in Unix su SSH

Risorse aggiuntive