Actualización 22 de febrero de 2013 : La entrada de Microsoft Connect tiene una nota de Alok Shriram (Administrador de programas, Bibliotecas de clase base, .NET Framework) de que el problema ahora debería resolverse. La entrada Connect está marcada como Resuelta (Fija) :
Este problema debería solucionarse ahora. Publicamos una actualización de las fuentes de referencia. Háganos saber en caso de que su problema aún no se haya solucionado.
Año y medio.
Enlaces de bonificación
Pregunta original
¿Cómo habilito el paso de fuente de .NET Framework en Visual Studio 2010?
Nota : esta pregunta es una parte de un todo más amplio:
- .NET 2.0 WinForm: compatible con DPI y cambios de fuente predeterminados
- Los controles de WinForms no se escalan durante ScaleControl
- VS2010: ¿Cómo habilitar "Habilitar el paso de fuente de .NET Framework"?
- Visual Studio 2010 Professional: ¿Cómo acceder a la ventana Módulos?
- Visual Studio 2010: Propiedades, configuración rota después de redireccionar el proyecto a .NET Framework 3.5
Visual Studio 2010 viene con una nueva característica:
- Herramientas, Opciones, Depuración, General, Habilitar el paso de fuente de .NET Framework
Siguiendo las instrucciones de la página de MSDN Cómo: Depurar .NET Framework Fuente :
Para habilitar la depuración de origen 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 fuente de .NET Framework
- Habilitar la compatibilidad con el servidor de origen
Hago esto:
Nota : Notará, como señala la página de MSDN, y como noté, que al marcar Habilitar paso de fuente de .NET Framework automáticamente se desmarcará ** Habilitar solo mi código (solo administrado). También habilité los mensajes de diagnóstico de soporte del servidor de origen.
Habilitar esas opciones configura automáticamente una ubicación de descarga de caché de símbolos para mí:
Nota : La entrada de Microsoft Symbol Server ya está presente (y no se puede eliminar).
La página de MSDN dice que cargue los símbolos:
Para cargar símbolos de Framework usando la ventana Módulos
En la ventana Módulos , haga clic con el botón derecho en un módulo para el que no se cargan símbolos. Puede saber si los símbolos están cargados o no mirando la columna Estado de los símbolos .
Seleccione Cargar símbolos desde 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ímbolos para cargarlos desde un directorio donde haya almacenado símbolos anteriormente.
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 de .NET Framework:
protected override void ScaleControl(SizeF factor, BoundsSpecified specified)
{
base.ScaleControl(factor, specified);
Empujar F11hace que el depurador simplemente salte 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 fuente 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. Espero que esto me permita 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 fuente de .NET Framework en Visual Studio 2010?
Si cambio a la vista de desmontaje antes de intentar entrar en el código .NET ( Depurar -> Windows -> Desmontaje ), puedo ver un call
código .NET:
Y cuando lo hago, termino depurando un desmontaje de System.Windows.Forms.ScaleControl
:
Lo cual no es lo mismo ni tan útil como poder ingresar a la fuente de .NET Framework.
¿Cómo habilito el paso de fuente 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:
Entonces esta descargando pdb
archivos de símbolos, pero se niega a usarlos.
¿Cómo habilito el paso de fuente de .NET Framework en Visual Studio 2010?
Leppie sugirió que revisara el Debug
registro (con la ventana del registro de depuración abierta; de lo contrario, no 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.
Así que está buscando mis símbolos, pero afirmando que no pudo encontrarlos.
¿Cómo habilito el paso de fuente de .NET Framework en Visual Studio 2010?
Un tipo de Microsoft Italia sugiere desactivar Requerir que los archivos de origen coincidan exactamente con la versión original :
Eso no lo solucionó.
¿Cómo habilito el paso de fuente 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 a .NET Framework 3.5 de destino :
Eso no lo solucionó.
¿Cómo habilito el paso de fuente de .NET Framework en Visual Studio 2010?
Alguien en algún lugar se preguntó distraídamente 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 64 bits de Visual Studio, pero intenté cambiar mi proyecto de AnyCPU a x86 (estaba siendo JITed 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 fuente de .NET Framework en Visual Studio 2010?
Ver también
- Configuración de Visual Studio para depurar el código fuente de .NET Framework
- No se puede depurar el código de .NET Framework en VS2010
- El paso de la fuente de .NET Framework no funciona a pesar de las opciones establecidas
- Configuración de Visual Studio 2010 para ingresar al código fuente de Microsoft .NET
- Depuración de código fuente de Visual Studio 2008 SP1 .NET Framework
- Ventana Sin depuración> Módulos en Visual Studio 2008 Versión 9.0.21022.8 RTM
fuente
Respuestas:
Los PDB para recorrer el código fuente solo se publican para RTM y Service Packs. Como tal, cuando aparece una actualización de seguridad y modifica el dll que está intentando depurar, hará que el paso de la fuente no funcione (es decir, obtendrá el mensaje "No hay fuente disponible" con un "Examinar para encontrar la fuente" ").
Sin embargo, una vez que haya realizado todas las configuraciones adecuadas, puede utilizar la siguiente solución. La solución consiste esencialmente en encontrar las actualizaciones de seguridad que provocaron el cambio de la dll y luego eliminarlas. Esto tiene la desventaja obvia de eliminar esas actualizaciones de seguridad de su máquina.
Solución alterna
site:support.microsoft.com/kb System.Windows.Forms.dll 4.0.30319.269
http://support.microsoft.com/kb/2604121
KB2604121, es lo que nos interesa.Deberá hacer esto para cada dll dentro del marco .NET en el 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 Breakpoints, diga New-> Break at Function, e ingrese System.Windows.Forms.Form.Form) o ingrese a uno de los .net métodos en ese dll.
fuente
Aunque desafortunadamente hay un problema con Microsoft, como señaló Leppie (y obtuve el mismo resultado, vea
Cabe señalar que su intento fallará de todos modos, ya que hizo referencia a:
en vez 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 de .NET Framework
fuente
Creo que he encontrado la respuesta.
Seguí lo que estaba sucediendo en Fiddler. Parece que solo los símbolos están disponibles actualmente y no hay fuente.
Cuando VS intenta cargar los símbolos del servidor de 'fuente de referencia', 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, intenta 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 algo de código fuente hace un tiempo. Pero ahora no funciona.
Editar:
Lo probé con varias versiones de .NET, todos con el mismo resultado. :(
fuente
Por ahora, no funciona si tiene SP1 instalado. Aquí hay algunos comentarios sobre el problema de MS: http://social.msdn.microsoft.com/Forums/en-US/refsourceserver/thread/41388c7b-582b-4e3f-8178-3d38a3c99639
fuente
En mi caso, estaba depurando una antigua aplicación .NET 2.0 WinForms y recibí el mensaje "Fuente no disponible" . Probé todas las configuraciones recomendadas.
En última instancia, reconstruí la aplicación para apuntar temporalmente a .NET 4.5 y pude hacer que la fuente funcionara. Quizás mi aplicación era demasiado antigua para cambiar la fuente. Un poco frustra el propósito, lo sé, pero para pruebas rápidas y sucias funciona. El error que tengo todavía está presente en .NET 4.5 . :)
fuente
Puede encontrar la fuente de referencia aquí, 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 también se pueden encontrar allí:
Microsoft Referencesource NetFramework
fuente
Aquí están las instrucciones oficiales https://referencesource.microsoft.com/setup.html
fuente
si desea depurar el código fuente abierto (como el paquete nuget), puede agregar esta URL a su lista de servidores de símbolos
http://srv.symbolsource.org/pdb/Public
fuente