2010-08-27 2 views
6

Attualmente sto cercando un bug e devo eseguire il debug in una specifica DLL nella configurazione di rilascio in Visual Studio 2005. A un certo punto ho chiuso la soluzione, ho fatto altre cose e l'ho ricaricata. Da quel momento il mio punto di interruzione non viene colpito e ottengo il famigerato messaggio "Nessun simbolo è stato caricato ...". Così ho aperto la finestra dei moduli e la DLL che voglio eseguire il debug non compare più nell'elenco, quindi non posso caricare i simboli manualmente. L'applicazione si comporta normalmente, quindi sono assolutamente sicuro che DEVE essere stato caricato per eseguire determinate funzioni. Abbastanza sicuro, se rinominare la DLL e avviare l'applicazione non funziona più, quindi deve anche essere la dll giusta.Perché manca la DLL caricata nell'elenco dei moduli di Visual Studio?

Ho provato a impostare il progetto dll come progetto di avvio e il comando da eseguire sull'exe dell'applicazione e avviare l'applicazione da Visual Studio esterno e quindi collegarlo al processo, tutto inutilmente.

Domanda è, perché la dll non viene visualizzata nell'elenco dei moduli caricati anche se deve essere stata caricata? Non riesco a pensare ad altri cambiamenti che ho fatto, che potrebbero causare questo, mi sto perdendo qualcosa? (Forse qualcosa di veramente ovvio?)

Qualsiasi aiuto apprezzato!

risposta

1

Ho riscontrato un problema simile dopo aver trasferito un progetto da un computer a un altro. Spiegherò semplicemente cosa ho scoperto e come l'ho risolto, e puoi determinare se si adatta al tuo problema e soluzione.

  1. Il computer di lavoro che ho scritto un'applicazione su conteneva un file .dll che il mio programma è stato di riferimento. Dopo aver spostato l'applicazione sul mio computer di casa, l'applicazione non è più in grado di individuare il file .dll a cui si stava facendo riferimento in precedenza perché il file non era più lì.

  2. L'applicazione è stata compilata e eseguita anche senza la risorsa di riferimento (file .dll) perché l'assembly compilato in precedenza (cartella debug) conteneva la propria copia del file .dll e altre risorse. In parole semplici, è la vecchia build di assembly in esecuzione e non l'applicazione corrente su cui stai lavorando. Questo è anche il motivo per cui questo errore tende a sospendere la finestra del designer e genera un errore dopo che l'app è stata eseguita.

vorrei dare un'occhiata al seguente:

a) Sotto Esplora soluzioni, entrate nella Riferimenti cartella e clic destro del nodo di riferimento mancante e selezionare proprietà. Nella casella delle proprietà, osservare il percorso della risorsa a cui si fa riferimento. La risorsa si trova ancora su questo percorso?

b) Controllare la cartella di debug per una copia della risorsa che si sta cercando. Se la risorsa è , creare una copia e salvarla sul desktop. Se è non c'è, scarica il file dalla sorgente originale.

c) Sotto Esplora soluzioni, fare clic destro 'Proprietà' e 'aperta '. Dal menu che appare seleziona "Risorse" da sinistra e nella parte superiore della nuova finestra che appare dovresti vedere "Aggiungi risorsa" con una piccola freccia a discesa. Fare clic sulla freccia e selezionare "Aggiungi file esistente" e quindi individuare il file. Se non lo vedi, potrebbe essere necessario modificare il file da sfogliare dal piccolo menu a discesa sopra i pulsanti "Apri" e "Annulla". Dopo aver individuato il file, dovrebbe creare una nuova cartella in Solution Explorer chiamata "risorse". Ora il file è una parte permanente della tua applicazione e non solo un riferimento ad essa.

1

Ho avuto lo stesso problema di oggi con Visual Studio 2008. Io sto usando un semplice tester per testare un nuovo metodo in un assieme. Così ho aggiunto un riferimento al mio assembly Ho scritto il codice per caricare l'assembly e chiamare il nuovo metodo, compilare, tutto OK. Ma durante l'esecuzione il debugger lanciava un'eccezione dicendo che il nuovo nuovo metodo non esisteva e la finestra dei moduli era vuota.

Risulta l'assembly che stavo modificando era nel GAC e utilizzava al posto di quello nuovo nella mia directory di compilazione.