c# - online - ordenar codigo en visual studio code
"Explorar para encontrar el código fuente" en Visual Studio 2010 (2)
¿Cuándo está habilitado "Buscar para buscar el origen" en Visual Studio 2010? (vea abajo)
Además, quiero tenerlo habilitado para poder buscar archivos de código fuente ya descargados desde http://referencesource.microsoft.com/ .
Esto sería útil ya que Microsoft no siempre libera el PDB fuente / PDB al mismo tiempo con sus últimos parches. Así que si quiero ingresar por ejemplo a DateTime, realmente no me importan los últimos parches que no incluyeron DateTime. Solo quiero buscar el código que descargué de http://referencesource.microsoft.com/ .
Después de algunas investigaciones, encontré dia2dump, que es una herramienta útil para ver el contenido de los archivos PDB. (Está en C:/Program Files (x86)/Microsoft Visual Studio 10.0/DIA SDK/Samples/DIA2Dump/
)
Parece que cuando no puedo ver el código fuente de algo como DateTime, usando la versión de .NET Framework, se descarga un archivo mscorlib.pdb
.
Pero si mira dentro con dia2dump , no contiene asignaciones de archivos de origen. En otras palabras, es inútil, porque incluso si pudiera buscar el código fuente como mi idea inicial, no funcionaría porque no hay asignaciones de archivos fuente ni direcciones de inicio de las funciones, y faltan muchas cosas :(
Creo que las soluciones aquí son usar .NET Reflector Pro o mantener una máquina virtual a la mano, con versiones del marco que tienen el código fuente y luego deshabilitar las actualizaciones.
Introducción
Cuando haces una compilación desde Visual Studio, normalmente, también obtienes un archivo PDB además de tu archivo ejecutable. Puede ver este archivo en el ..bin/Debug
o ..bin/Release
. Este archivo PDB mantiene una asignación a sus líneas de código fuente y código ejecutable en su ensamblaje. Además, las ubicaciones originales de los archivos de código fuente a partir de los cuales se realizó una compilación se almacenan dentro de un archivo PDB. Esto significa que si construye una biblioteca de clases que tiene un solo archivo ubicado en G:/ClassLibrary/Class1.cs
, esta ruta se almacenará dentro de ClassLibrary.pdb
. Lo que es importante recordar de todo esto es que sin un archivo PDB es imposible realizar una depuración paso a paso del código fuente.
Escenario de la vida real
Entonces, supongamos que hago una compilación en mi unidad G:/ClassLibrary1
, para una biblioteca de clases.
Te entrego un ClassLibrary.dll
y un archivo ClassLibrary.pdb
, o los obtienes al verificarlos desde el control de código fuente.
Hace referencia a ClassLibrary.dll
en su proyecto y usa una clase de la biblioteca.
Si ahora intenta ingresar al código de clase de la biblioteca, sucederá lo siguiente:
Visual Studio intenta localizar un archivo ClassLibrary.pdb en un par de ubicaciones
1.1 Si no lo encuentra, aparece la página "Buscar para encontrar el origen" desactivada. Recuerde, no puede depurar sin un archivo PDB válido.
1.2 Si encuentra un archivo PDB, busca dentro del archivo PDB y ve que está intentando depurar
Class1.cs
que se creó originalmente a partir deG:/ClassLibrary1/Class1.cs
y busca en tu computadora ese archivo.
1.2.1 Si lo encuentra, entra en el código automáticamente.
1.2.2 Si no lo encuentra, aparece el siguiente cuadro de diálogo:
Si presiona Cancelar, se le presentará con: "No hay fuente disponible" y tendrá habilitada la opción "Buscar para encontrar la fuente" en este caso.
¿Por qué? Debido a que tiene un archivo PDB válido, pero Visual Studio no puede saber dónde tiene el código fuente de ClassLibrary1 en su computadora o si incluso lo tiene en su computadora. Es por eso que tiene el cuadro de diálogo -> para que pueda apuntar Visual Studio a la ubicación exacta del archivo de código fuente.
Notas finales
Entonces, ¿qué harás cuando hagas una búsqueda para encontrar la fuente deshabilitada?
En Visual Studio, abre el menú Depurar -> Windows -> Pila de llamadas .
Haga clic con el botón derecho en la instrucción de llamada superior y seleccione "Información de carga de símbolo". Le mostrará las ubicaciones donde Visual Studio ha tratado de encontrar un archivo PDB válido.
- 1.a Si solo ve los mensajes "No se puede encontrar o abrir el archivo PDB", coloque un archivo PDB válido en cualquiera de estas ubicaciones. (Es posible que tenga que desplazarse hacia la derecha para ver los mensajes) Detener e iniciar la depuración nuevamente.
- 1.b Si ve el mensaje "El PDB no coincide con la imagen" significa lo siguiente. Visual Studio ha encontrado un archivo PDB, pero es para otra compilación. Si construyo ClassLibrary1.dll y te lo doy, y luego lo compilo de nuevo sin cambiar una sola línea de código y luego te doy el PDB, e intentas depurar
classLibrary1.dll
obtendrás este mensaje. El ensamblaje y su archivo PDB deben ser exactamente de la misma compilación, de lo contrario obtendrá este mensaje. (Esta comprobación se realiza utilizando un número único colocado dentro del ensamblaje y el archivo PDB cada vez que realice una compilación) - 1.c Usted ve un mensaje de "símbolos cargados" pero sigue teniendo deshabilitado "Buscar para encontrar". Significa que el archivo PDB que tiene no es bueno para la depuración paso a paso. Algunos archivos PDB que intenta utilizar no tienen toda la información necesaria para la depuración. Creo que puedes controlar esto desde algún lugar en la configuración de compilación avanzada, pero no lo he probado, porque quiero que se generen archivos PDB utilizables cada vez que hago una compilación. Esta situación suele ocurrir si intenta depurar el código fuente del propio framework .NET y Microsoft no ha colocado archivos PDB utilizables para el código fuente, sino que Microsoft ha colocado algunos archivos PDB que no se pueden usar para el paso a paso. depurar. Esto sucede con más frecuencia de lo que piensa, porque a menudo Microsoft realiza actualizaciones (parches) del código fuente de .NET Framework. Estas actualizaciones se instalan silenciosamente en su computadora a través de Windows Update , y se sorprende al ver que ayer pudo depurar el código fuente de .NET Framework y hoy no puede hacerlo. Por lo general, toma algún tiempo hasta que ponen un archivo PDB válido para el último código. En este caso, puede usar la capacidad de depuración por pasos de .NET Reflector Pro o una máquina virtual que tenga una versión de .NET framework con archivos PDB utilizables y deshabilitar Windows Update en esa máquina.
Echa un vistazo al artículo Paso a código fuente de .NET Framework 4.0 .
Si encuentra la pantalla "No hay fuente disponible", intente presionar "Buscar para buscar fuente" y busque el archivo que necesita en el directorio de origen. Probablemente deberías usar la búsqueda de archivos para encontrarla. Esto se hace solo una vez, ya que a partir de ahora Visual Studio recuerda esta ubicación y busca los archivos de origen que faltan.
Espero que sea sobre lo que estás buscando.