“Vai alla definizione” in Visual Studio mostra solo i metadati per i riferimenti non di progetto

Ho un progetto C # che contiene riferimenti agli assembly in formato DLL. Ho le informazioni sul PDB per questi file DLL, contenute nella stessa cartella. Quando premo F12 su un membro di riferimento, voglio andare alla definizione del membro. Invece, mi dà i metadati, che ovviamente non voglio.

Quando VS esegue il debug, va al codice sorgente se faccio un singolo passaggio in quel metodo. Ma se premo F12 su quel metodo, mi porta ancora ai metadati.

C’è una domanda simile qui, ma si applica solo ai riferimenti del progetto e la soluzione accettata non ha nulla a che fare con il mio problema.

“Vai alla definizione” in Visual Studio mostra solo i metadati

Riassumere:

  • Il progetto di riferimento è una DLL
  • Ho le informazioni sul PDB
  • Single-stepping in modalità debug mi porta al codice sorgente
  • F12 mi porta ai metadati
  • Voglio F12 per portarmi al codice sorgente come fa il debug.

MODIFICA: l’aggiunta come “Progetto” non è un’opzione in quanto crea una complessità aggiuntiva poiché il nostro file di soluzione fa riferimento a cinque altri progetti che sono tutti in repository separati di controllo del codice sorgente.

In Visual Studio, espandere la sezione Riferimenti, selezionare il riferimento al progetto correlato (quello che contiene il codice sorgente in cui si desidera inserire F12), fare clic con il pulsante destro del mouse su di esso e selezionare “Rimuovi”.

Quindi aggiungi nuovamente il riferimento al progetto facendo clic con il tasto destro su Riferimenti e selezionando Aggiungi riferimento, nella scheda Progetti (se stai usando VS 2012) seleziona (o naviga per) il progetto a cui vuoi aggiungere un riferimento e poi fai clic sul pulsante OK .

Questo ricostruirà il riferimento e sarai in grado di F12 nel codice sorgente dei progetti di riferimento. Avrai bisogno di farlo con tutti i progetti nelle tue soluzioni che stanno avendo questo problema.

Non so perché questo accada ma almeno la soluzione al problema è piuttosto semplice

Se hai installato ReSharper, dovresti visualizzare le opzioni di ReSharper e cercare External Sources . Qui puoi specificare le opzioni pertinenti:

inserisci la descrizione dell'immagine qui

Sembra che questo problema sia stato risolto in Visual Studio 2013. Avere le informazioni sul PDB nella stessa cartella della DLL mi mostra il codice sorgente quando utilizzo Vai alla definizione. Non ho installato l’estensione Reflector.

La DLL di riferimento è un progetto nella tua soluzione? Trovo che quando ho il codice sorgente per il progetto, ed è nella mia soluzione, Visual Studio è in grado di collegarsi a questo codice molto più facilmente. (senza mostrarmi metadati).

Inoltre, assicurati di aggiungere il riferimento a “Progetto” nel popup Riferimenti.

Questo è generalmente ciò che faccio comunque quando ho questo problema

Spero che questo ti aiuti!

PS. I file PDB sono in genere solo per il debug (sia localmente che remoti) e non vengono utilizzati per la lettura del codice sorgente nel modo in cui si sta tentando di utilizzarlo. (“Vai alla definizione”)

Una soluzione a questo problema è l’uso di .NET Reflector, VS o VSPro edition. Questo programma modificherà Visual Studio per fornire la funzionalità richiesta.

http://www.reflector.net/

Purtroppo, costa $ 135 a $ 195, che non è un’opzione per tutti.

Aggiungere il riferimento come progetto invece di .. \ bin \ Debug \ referenceFile.dll

Questo ha risolto il mio problema

Ho anche usato un riferimento come progetto e il mio problema è stato risolto e funziona benissimo. In realtà sono rimasto bloccato a questo punto da molto tempo e alla fine ho risolto questo problema.

Riferimenti -> Aggiungi riferimenti -> Soluzione -> Progetti -> Seleziona riferimento

inserisci la descrizione dell'immagine qui