2010-04-12 22 views
63

Mi proyecto C# hace referencia a un archivo DLL de terceros para el que tengo el código fuente. ¿De alguna manera puedo decirle a Visual Studio la ubicación de ese código fuente, para que, por ejemplo, cuando presiono F12 para abrir la definición de un método en la DLL, abra el código fuente, en lugar de abrir el " Class? From metadata?Visual Studio - Adjunte el código fuente a la referencia

+1

ver pregunta duplicado: http://stackoverflow.com/questions/5368423/how-to-attach-sources-to-referenced-assembly-in-visual-studio –

Respuesta

9

Una forma de hacerlo podría ser crear otro proyecto en su solución, poner el origen DLL allí, y luego desde su proyecto principal, agregar la dependencia como referencia de proyecto en lugar de una referencia de ensamblado. Eso debería permitirle explorar el código fuente/paso mientras depura, etc.

Puede haber una manera más fácil de hacerlo, pero no conozco ninguno en este momento.

+8

Se estorba la solución un poco, y se significa que estoy compilando archivos DLL de terceros, lo cual me parece un poco extraño/más lento.Esperaba que Visual Studio tuviera el equivalente a la opción "adjuntar fuente" de Eclipse al hacer referencia a un archivo JAR. –

+1

Sí, sé que es menos que ideal. Si alguien más tiene una mejor solución, me interesaría conocerme a mí mismo. – tzaman

+1

Resharper es la única forma en que podría hacer que esto funcione, ver mi comentario anterior. – netlander

25

Si usa ReSharper, puede habilitarlo en ReSharper/Opciones/Fuentes externas, y vaya hacia arriba "Fuentes desde archivos de símbolos". Luego, en la pestaña "Fuentes de los archivos de símbolos", haga clic en "Avanzado" y allí podrá asignar las carpetas de origen.

+8

¿Cuál es la "carpeta de destino" para ese diálogo? Solo tengo una DLL y una carpeta de fuentes que me gustaría adjuntar para fines de navegación. – Iain

21

Parece que la respuesta está cerca de la parte inferior de this MSDN documentation page.

El depurador busca archivos de origen en los siguientes lugares:

1. Files that are open in the IDE of the Visual Studio instance that launched the debugger. 

2. Files in the solution that is open in the VS instance. 

3. Directories that are specified in the "Common Properties"/"Debug Source Files" page in the properties of the solution. 

4. The source information of the .pdb of the module. This can be the location of the source file when the module was built, or it can be a command to a source server. 

Para añadir un directorio a la página de la solución de archivos de origen de depuración (paso 3 anterior):

Puede especificar una red o directorios locales para buscar archivos de origen .

1. Select the solution in Solution Explorer and then choose "Properties" from the shortcut menu (i.e. right-click context menu). 

2. Under the "Common Properties" node, choose "Debug Source Files". 

3. Click the folder icon. Editable text appears in the "Directories containing source code" list. 

4. Add the path that you want to search. 

Tenga en cuenta que se busca sólo el directorio especificado. Debe agregar entradas para cualquier subdirectorio que desee buscar.

Por lo tanto, si solo desea depurar un archivo específico una vez sin saturar su solución, simplemente abra ese archivo en el IDE de Visual Studio; si necesita pasar de ese archivo a otros, es probable que necesite tener los otros archivos abiertos en Visual Studio también.

Si a menudo encuentras que necesitan a los archivos de origen de depuración fuera de su solución, entonces puede:

  1. Añadir los archivos de origen a uno de los proyectos existentes en la solución, o crear un nuevo proyecto en la solución para albergar los archivos de origen. Esto desordenará su solución/proyecto, pero dado que se controlará en el control de la fuente, todos los miembros del equipo podrán depurar automáticamente en los archivos fuente.
  2. Agregue los directorios que contienen el código fuente a los "Archivos de origen de depuración" de la solución. Como este cambio no se controla en el control de origen, cada miembro del equipo que desee depurar los archivos fuente tendrá que hacer esto y agregar sus rutas locales. Además, si obtiene el código de solución en una máquina diferente, deberá recordar realizar este paso nuevamente.
+2

Desafortunadamente, esto solo funciona si * depura * un programa en ejecución que usa el ensamblado. Lo que Joe estaba buscando es una forma de navegar por código (por ejemplo, encontrar definición, usos, etc.) en el IDE sin ejecutar el código. Si ReSharper ha resuelto este problema, genial. Espero que las versiones más recientes de Visual Studio también tengan la habilidad incorporada. Pero no puedo encontrarlo. ¿Alguien sabe? – Minyu

+0

Resharper es la única forma que pude encontrar que hace esto. Me sorprende el hecho de que Visual Studio 2015 Enterprise (una pieza tan costosa de software) no admite una función tan simple que resulta ser una ocurrencia tardía en IDEs de grado "empresarial" como Eclipse, una pieza gratuita y de código abierto. software. – netlander

Cuestiones relacionadas