2010-04-12 17 views
63

Il mio progetto C# fa riferimento a una DLL di terze parti per cui dispongo del codice sorgente. Posso in qualche modo dire a Visual Studio la posizione di quel codice sorgente, così che, per esempio, quando premo F12 per aprire la definizione di un metodo nella DLL, si aprirà il codice sorgente, invece di aprire il " Classe [dai metadati] "codice stub?Visual Studio - Allegare il codice sorgente al riferimento

+1

vedi domanda duplicato: http://stackoverflow.com/questions/5368423/how-to-attach-sources-to-referenced-assembly-in-visual-studio –

risposta

9

Un modo per farlo sarebbe quello di creare un altro progetto nella soluzione, inserire la sorgente DLL in tale posizione e quindi dal progetto principale, aggiungere la dipendenza come riferimento di progetto anziché come riferimento di assembly. Questo dovrebbe permetterti di sfogliare il sorgente/passo dentro durante il debug, ecc.

Potrebbe esserci un modo più semplice per farlo, ma al momento non ne sono a conoscenza.

+8

E ingombra la soluzione un po ', ed è significa che sto compilando io stesso le DLL di terze parti, il che sembra un po 'strano/lento.Speravo che Visual Studio avesse l'equivalente dell'opzione "attach source" di Eclipse quando si fa riferimento a un file JAR. –

+1

Sì, lo so che non è l'ideale. Se qualcun altro ha una soluzione migliore, sarei interessato a conoscere me stesso. – tzaman

+1

Resharper è l'unico modo per farlo funzionare, vedere il mio commento sopra. – netlander

25

Se si utilizza ReSharper, è possibile attivarlo accedendo a ReSharper/Opzioni/Origini esterne e spostandosi verso l'alto "Sorgenti da file di simboli". Quindi nella scheda "Fonti di file di simboli", fai clic su "Avanzate" e lì puoi mappare le cartelle di origine.

+8

Qual è la 'cartella di destinazione' per quella finestra di dialogo? Ho solo una DLL e una cartella di sorgenti che vorrei allegare per scopi di navigazione. – Iain

21

Sembra che la risposta sia vicino al fondo di this MSDN documentation page.

Il debugger cerca i file di origine nelle seguenti posizioni:

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. 

Per aggiungere una directory alla pagina della soluzione dei file di origine di debug (al punto 3):

È possibile specificare una rete o le directory locali per cercare i file di origine .

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. 

Si noti che viene eseguita la ricerca solo nella directory specificata. È necessario aggiungere voci per qualsiasi sottodirectory che si desidera cercare.

Quindi, se si desidera eseguire il debug di un file specifico una sola volta senza ingombrare la soluzione, è sufficiente aprire tale file nell'IDE di Visual Studio; se è necessario passare da quel file ad altri, è probabile che sia necessario aprire anche gli altri file in Visual Studio.

Se vi trovate spesso a dover file di origine di debug al di fuori della vostra soluzione, allora è possibile:

  1. Aggiungere i file di origine ad uno dei tuoi progetti esistenti nella soluzione, o creare un nuovo progetto in la soluzione per ospitare i file sorgente. Ciò ingombra la soluzione/il progetto, ma poiché verrà controllato nel controllo del codice sorgente, tutti i membri del team saranno automaticamente in grado di eseguire il debug nei file di origine.
  2. Aggiungere le directory che contengono il codice sorgente ai "file di origine di debug" della soluzione. Poiché questa modifica non viene verificata nel controllo del codice sorgente, ogni membro del team che desidera eseguire il debug dei file di origine dovrà eseguire questa operazione e aggiungere i relativi percorsi locali. Inoltre, se si ottiene il codice della soluzione su un altro computer, sarà necessario ricordarsi di eseguire nuovamente questo passaggio.
+2

Sfortunatamente questo funziona solo se si * debug * un programma in esecuzione che usa l'assembly. Quello che Joe stava cercando è un modo per fare la navigazione del codice (ad esempio, trovare definizione, usi, ecc.) Nell'IDE senza eseguire il codice. Se ReSharper ha risolto questo problema, ottimo. Spero che anche le versioni più recenti di Visual Studio abbiano l'abilità integrata. Ma non riesco a trovarlo. Qualcuno sa? – Minyu

+0

Il resharper è l'unico modo che ho trovato per farlo. Sono stupito dal fatto che Visual Studio 2015 Enterprise (un software così costoso) non supporta una funzionalità così semplice, che sembra essere solo un ripensamento in IDE di classe "enterprise" come Eclipse, un pezzo gratuito e open source di Software. – netlander

Problemi correlati