Depuración de código fuente de .NET y ASP.NET Core con Visual Studio

Para depurar código fuente de .NET y ASP.NET Core en Visual Studio:

  • En Herramientas -> Opciones -> Depuración -> General, desactive Habilitar Solo mi código.

    Enable Just My Code

  • Compruebe que la opción Habilitar compatibilidad con vínculos de origen está activada.

    Enable Source Link support

  • En Herramienta -> Opciones -> Depuración -> Símbolos, habilite Servidores de símbolos de Microsoft.

    Microsoft Symbol Server

Al depurar paso a paso por instrucciones cualquier código de .NET o ASP.NET Core, en Visual Studio se muestra el código fuente. Por ejemplo:

  • Establezca un punto de interrupción en OnGet en Pages/Privacy.cshtml.cs y seleccione el vínculo Privacy.

  • Seleccione una de las opciones Descargar origen y Continuar depuración.

    Source Link Will Download

Las instrucciones anteriores funcionan para funciones básicas de depuración paso a paso por instrucciones, pero en el código de .NET optimizado se suelen quitar las variables y funciones locales. Para deshabilitar las optimizaciones y permitir una mejor depuración del código fuente:

  • En Herramientas -> Opciones -> Depuración -> General, habilite Suprimir optimización JIT al cargar el módulo (únicamente administrado): Suppress JIT optimization on module load
  • Agregue la variable de entorno y el valor COMPlus_ReadyToRun=0 al archivo 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"
          }
        }
      }
    }
    

Si ha depurado una aplicación antes con la versión anterior de .NET, elimine el directorio %TEMP%/SymbolCache, ya que puede tener archivos PDU antiguos que no estén actualizados.

Depuración de .NET Core en Unix a través de SSH

Recursos adicionales