studio - ¿Cómo habilita "Habilitar el paso de la fuente de.NET Framework"?
visual studio 2012 (7)
Aquí puede encontrar la fuente de referencia, disponible para descargar:
Fuente de referencia de .NET Framework 4.0
Las fuentes para WCF, WF, e incluso 4.5 Beta / RC y muchas más se pueden encontrar allí también:
Actualización 22 de febrero de 2013 : La entrada de Microsoft Connect tiene una nota de Alok Shriram (Gerente de programa, 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 fuentes 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
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
Siguiendo las instrucciones en la página de MSDN Cómo: Depurar el origen de .NET Framework :
Para habilitar la depuración de fuentes de .NET Framework
En el menú Herramientas , haga clic en Opciones .
En el cuadro de diálogo Opciones , haga clic en la categoría Depuración .
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:
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í:
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
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 .
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:
y luego se cargan todos los símbolos:
He estado sentado en un punto de interrupción, que está a punto de llamar al código .NET framework:
protected override void ScaleControl(SizeF factor, BoundsSpecified specified)
{
base.ScaleControl(factor, specified);
Al presionar F11 , el depurador simplemente pasa a la siguiente línea:
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 fuentes 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 pila de llamadas. Esto, espero, me permitiría saltar al código .NET:
Excepto que no funciona: Visual Studio me dice que no hay una fuente disponible:
¿Cómo habilito el paso de fuentes 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:
Y cuando lo hago, termino depurando un desmontaje de System.Windows.Forms.ScaleControl
:
Lo cual no es lo mismo o tan útil como poder acceder al origen de .NET Framework.
¿Cómo habilito el paso de fuentes 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:
Así que está descargando archivos de símbolos pdb
, pero se niega a usarlos.
¿Cómo habilito el paso de fuentes 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.
Por lo tanto, es encontrar mis símbolos, pero alegar que no pudo encontrarlos.
¿Cómo habilito el paso de fuentes 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 :
Eso no lo solucionó.
¿Cómo habilito el paso de fuentes 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 objetivo .NET Framework 3.5 :
Eso no lo solucionó.
¿Cómo habilito el paso de fuentes 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:
Eso no lo solucionó:
Step into: Stepping over method without symbols ''System.Windows.Forms.Form.ScaleControl''
¿Cómo habilito el paso de fuentes 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 fuentes de Visual Source 2008 SP1 .NET Framework
- Sin depuración> Ventana Módulos en Visual Studio 2008 Versión 9.0.21022.8 RTM
Aunque desafortunadamente hay un problema con Microsoft, como señaló Leppie (y obtuve el mismo resultado, vea
debe tenerse en cuenta que su intento 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
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 fuentes de .NET framework
- Habilitar el servidor de origen
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.
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).
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. :(
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
- Identifique a qué dll desea depurar (por ejemplo, System.Windows.Forms.dll)
- 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)
- 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
- 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. - Vaya a Panel de control-> Programas y características, y haga clic en "Ver actualizaciones instaladas"
- Busque una actualización que liste el número KB (puede usar la búsqueda en el cuadro superior derecho).
- Desinstalar esa actualización
- 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.
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
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