¿Cómo habilita “Habilitar el paso de la fuente de .NET Framework”?

Actualización 22 de febrero de 2013 : La entrada de Microsoft Connect tiene una nota de Alok Shriram (Gerente de progtwig, Bibliotecas de clase base, .NET Framework) de que el problema debería resolverse ahora. La entrada de Connect está marcada como Resuelta (Fija) :

Este problema ahora debe ser reparado. Publicamos una actualización de las fonts de referencia. Por favor, háganos saber en caso de que su problema aún no se solucione.

Año y medio.

Enlaces de bonificación

  • Vote que este error se solucione en Microsoft Connect .

  • Haga un hilo en Microsoft Social que ha estado funcionando durante un año y medio, preguntando cuándo se solucionará .

Pregunta original

¿Cómo habilito el paso de fuente de marco de .NET en Visual Studio 2010?


Nota : esta pregunta es una pieza de un todo más grande:

  • .NET 2.0 WinForm: admite DPI y cambios de fuente predeterminados
  • Los controles de WinForms no se escalan durante ScaleControl
  • VS2010: ¿Cómo habilitar “Habilitar el paso a la fuente de .NET Framework”?
  • Visual Studio 2010 Professional: ¿Cómo acceder a la ventana de Módulos?
  • Visual Studio 2010: Propiedades. Las configuraciones se rompieron después de reorientar el proyecto a .NET Framework 3.5

Visual Studio 2010 viene con una nueva característica:

  • Herramientas, Opciones, Depuración, General, Habilite el paso de la fuente de .NET Framework

Captura de pantalla del menú de opciones

Siguiendo las instrucciones en la página de MSDN Cómo: Depurar el origen de .NET Framework :

Para habilitar la depuración de fonts de .NET Framework

  1. En el menú Herramientas , haga clic en Opciones .

  2. En el cuadro de diálogo Opciones , haga clic en la categoría Depuración .

  3. En el cuadro General , seleccione las siguientes casillas de verificación:

    • Habilitar el paso de la fuente de .NET Framework
    • Habilitar el servidor de origen

Hago esto:

Captura de pantalla del menú de opciones, resaltando las opciones relevantes seleccionadas

Nota : Notará, como notas de la página de MSDN, y como noté, que marcar Habilitar el paso de la fuente de .NET Framework desactivará automáticamente ** Habilitar solo mi código (solo administrado). También habilité los mensajes de diagnóstico del soporte del servidor de origen.

Habilitar esas opciones establece automáticamente una ubicación de descarga de memoria caché de símbolos para mí:

Captura de pantalla del menú de opciones, que muestra el directorio de caché (resaltado)

Nota : La entrada del Servidor de símbolos de Microsoft ya está presente (y no se puede eliminar).


La página de MSDN dice que cargues los símbolos:

Para cargar símbolos de Marco usando la ventana Módulos

  1. En la ventana de Módulos , haga clic derecho en un módulo para el cual no se cargan los símbolos. Puede ver si los símbolos están cargados o no mirando la columna Estado de símbolos .

  2. Señale Cargar símbolos de y haga clic en Servidores de símbolos de Microsoft para descargar símbolos del servidor de símbolos públicos de Microsoft o Ruta de símbolo para cargar desde un directorio donde haya almacenado símbolos previamente.

Intento esto:

enter image description here

y luego se cargan todos los símbolos:

Captura de pantalla de la ventana de módulos, como se describió anteriormente

He estado sentado en un punto de interrupción, que está a punto de llamar al código .NET framework:

Captura de pantalla del código, transcrito a continuación

protected override void ScaleControl(SizeF factor, BoundsSpecified specified) { base.ScaleControl(factor, specified); 

Al presionar F11 , el depurador simplemente pasa a la siguiente línea:

Captura de pantalla del código, transcrito a continuación

 protected override void ScaleControl(SizeF factor, BoundsSpecified specified) { base.ScaleControl(factor, specified); //Record the running scale factor used this.scaleFactor = new SizeF( this.scaleFactor.Width * factor.Width, this.scaleFactor.Height * factor.Height); 

¿Cómo habilito el paso de fonts de .NET Framework en Visual Studio 2010?


Estoy sentado en un punto de interrupción en mi código. Intento hacer doble clic en una función más arriba en la stack de llamadas. Esto, espero, me permitiría saltar al código .NET:

enter image description here

Excepto que no funciona: Visual Studio me dice que no hay una fuente disponible:

Captura de pantalla del mensaje de error que indica que no hay fuente disponible

¿Cómo habilito el paso de fonts de .NET Framework en Visual Studio 2010?


Si cambio a la vista de desensamblaje antes de intentar ingresar al código .NET ( Depurar -> Windows -> Desensamblar ), puedo ver una call al código .NET:

Captura de pantalla del código

Y cuando lo hago, termino depurando un desassembly de System.Windows.Forms.ScaleControl :

Captura de pantalla de la ventana de desmontaje

Lo cual no es lo mismo o tan útil como poder acceder al origen de .NET Framework.

¿Cómo habilito el paso de fonts de .NET Framework en Visual Studio 2010?


La ruta de caché de símbolos configurada en mi computadora contiene archivos de caché de símbolos:

Captura de pantalla de la lista de carpetas

Así que está descargando archivos de símbolos pdb , pero se niega a usarlos.

¿Cómo habilito el paso de fonts de .NET Framework en Visual Studio 2010?


Leppie sugirió que revisara el registro de Debug (con la ventana de registro de depuración abierta, de lo contrario, no se registra nada):

 Step into: Stepping over method without symbols 'System.Windows.Forms.Form.ScaleControl' 

Anteriormente en el registro lo veo cargando símbolos para System.Windows.Forms.dll :

 Loaded 'C:\Windows\assembly\GAC_MSIL\System.Windows.Forms\2.0.0.0__b77a5c561934e089\System.Windows.Forms.dll', Symbols loaded. 

enter image description here

Por lo tanto, es encontrar mis símbolos, pero alegar que no pudo encontrarlos.

¿Cómo habilito el paso de fonts de .NET Framework en Visual Studio 2010?


Un chico de Microsoft Italia sugiere desactivar los archivos fuente Require para que coincidan exactamente con la versión original :

Captura de pantalla de la ventana de opciones

Eso no lo solucionó.

¿Cómo habilito el paso de fonts de .NET Framework en Visual Studio 2010?


Se ha sugerido que hay un error con el servidor de origen de Microsoft para .NET Framework 4.0 . Siguiendo esa sugerencia, cambié el proyecto al objective .NET Framework 3.5 :

enter image description here

Eso no lo solucionó.

¿Cómo habilito el paso de fonts de .NET Framework en Visual Studio 2010?


Alguien en algún lugar ociosamente se preguntó si otra persona que experimentaba el mismo problema estaba usando la versión de 64 bits del depurador . Ahora, no existe una versión de Visual Studio de 64 bits, pero traté de cambiar mi proyecto de AnyCPU a x86 (estaba JIT a x64), en caso de que Microsoft no admita procesadores de 64 bits:

enter image description here

Eso no lo solucionó:

 Step into: Stepping over method without symbols 'System.Windows.Forms.Form.ScaleControl' 

¿Cómo habilito el paso de fonts de .NET Framework en Visual Studio 2010?


Ver también

  • Configurar Visual Studio para depurar el código fuente de .NET Framework
  • No se pudo depurar el código del framework .NET en VS2010
  • El paso de la fuente del marco .NET no funciona a pesar del conjunto de opciones
  • Configuración de Visual Studio 2010 para entrar en el código fuente de Microsoft .NET
  • Depuración de fonts de Visual Source 2008 SP1 .NET Framework
  • Sin depuración> Ventana Módulos en Visual Studio 2008 Versión 9.0.21022.8 RTM

Los PDB para recorrer el código fuente solo se publican para RTM y Service Packs. Como tal, cuando salga la actualización de seguridad y modifique el dll que está tratando de depurar, provocará que el paso a nivel de origen no funcione (es decir, obtendrá la opción “Sin fuente disponible” con un gris “Buscar fuente “).

Sin embargo, una vez que haya realizado todas las configuraciones apropiadas, puede usar la siguiente solución alternativa. La solución alternativa consiste esencialmente en encontrar las actualizaciones de seguridad que causaron el cambio del dll y luego eliminarlas. Esto tiene la desventaja obvia de tener esas actualizaciones de seguridad eliminadas en su máquina.

Solución

  1. Identifique a qué dll desea depurar (por ejemplo, System.Windows.Forms.dll)
  2. Mientras realiza la depuración, abra la ventana Módulos en Visual Studio, busque la columna Versión . Si la versión no es la versión RTM o Service Pack, entonces deberá hacer el flujo de trabajo. Normalmente, el dll RTM dirá “construido por: RTMRel”. Mientras que un dll que era parte de una actualización de seguridad dirá “construido por: RTMGDR”. Tenga en cuenta el número de versión (por ejemplo, 4.0.30319.269 construido por: RTMGDR)
  3. Ahora, queremos encontrar la actualización que creó esta versión. Para ello, busque el dll y el número de versión en support.microsoft.com/kb/ Por ejemplo, hice la siguiente búsqueda en google: site:support.microsoft.com/kb System.Windows.Forms.dll 4.0.30319.269
  4. La búsqueda debería mostrar información sobre una actualización. Tenga en cuenta el número KB en la barra de direcciones. En mi ejemplo, la dirección era http://support.microsoft.com/kb/2604121 , por lo que KB2604121 es lo que nos interesa.
  5. Vaya a Panel de control-> Progtwigs y características, y haga clic en “Ver actualizaciones instaladas”
  6. Busque una actualización que liste el número KB (puede usar la búsqueda en el cuadro superior derecho).
  7. Desinstalar esa actualización
  8. Repita este proceso para este mismo dll hasta que el dll vuelva a su versión RTMRel o versión SP. Por ejemplo, para System.Windows.Forms.dll, tuve que eliminar KB2686827, KB2604121, KB2518870 antes de volver a la versión de RTMRel.

Tendrá que hacer esto para cada dll dentro del .NET Framework que le interese depurar.

Una vez hecho esto, establezca un punto de interrupción dentro de la fuente .net (por ejemplo, vaya a la pestaña Puntos de corte, diga Nuevo-> Interrumpir en función, e ingrese System.Windows.Forms.Form.Form) o ingrese a uno de los .net métodos en ese dll.

Aunque desafortunadamente hay un problema con Microsoft, como señaló Leppie (y obtuve el mismo resultado, vea

  • “No hay fuente disponible” – Depuración de Visual Studio (incluso cuando los símbolos se han cargado) )

debe tenerse en cuenta que su bash fallaría de todos modos, ya que hizo referencia a:

  • Servidor de símbolos de Microsoft

en lugar de:

  • referencesource.microsoft.com/symbols

Consulte la sección de Preguntas frecuentes / Solución de problemas de Configuración de Visual Studio para depurar el código fuente del Framework .NET

He encontrado la respuesta, creo.

Seguí lo que estaba sucediendo en Fiddler. Parece que solo los símbolos están actualmente disponibles, y no hay fuente.

Cuando VS intenta cargar los símbolos desde el servidor ‘referencesource’ falla (404). Como esto falla, creo que no se puede asignar a los archivos de origen en ese servidor.

http://referencesource.microsoft.com/symbols/mscorlib.pdb/ED96A7F38A2940F39B9CA7AD9BC5CB671/mscorlib.pdb

Después de la falla anterior, prueba un servidor llamado ‘msdl’ donde encuentra el PDB real (pero parece que este no tiene información de código fuente).

http://msdl.microsoft.com/download/symbols/mscorlib.pdb/ED96A7F38A2940F39B9CA7AD9BC5CB671/mscorlib.pd_

Con todo, parece ser un problema (temporal) de Microsoft con sus servidores.

Estoy seguro de que tuve un código fuente hace un tiempo. Pero ahora no está funcionando.

Editar:

Lo intenté con varias versiones de .NET, el mismo resultado. 🙁

Por ahora no funciona si tiene SP1 instalado. Aquí hay algunos comentarios sobre el problema del formulario MS: http://social.msdn.microsoft.com/Forums/en-US/refsourceserver/thread/41388c7b-582b-4e3f-8178-3d38a3c99639

Aquí puede encontrar la fuente de referencia, disponible para descargar:

Fuente de referencia de .NET Framework 4.0

Las fonts para WCF, WF, e incluso 4.5 Beta / RC y muchas más se pueden encontrar allí también:

Microsoft Referencesource NetFramework

Estas son las instrucciones oficiales https://referencesource.microsoft.com/setup.html

Configurar Visual Studio 2013 para depurar el framework .NET

Para configurar Visual Studio 2013, haga lo siguiente en el menú Herramientas -> Opciones -> Depuración -> General:

  • Inhabilitar solo mi código
  • Deshabilitar propiedades y operadores paso por paso
  • La desactivación requiere que los archivos fuente coincidan exactamente con la versión original
  • Habilitar el acceso a fonts de .NET framework
  • Habilitar el servidor de origen

si desea depurar código fuente abierto (como paquete nuget), puede agregar esta url a su lista de servidores de símbolos

http://srv.symbolsource.org/pdb/Public

http://www.symbolsource.org/Public/Home/VisualStudio