Ho un programma applicativo C#, chiamiamolo App.exe. Fa riferimento a una DLL denominata A.dll che a sua volta fa riferimento a un'altra DLL, ovvero B.dll. Tuttavia il modo in cui vengono citati è un po 'diverso. Nel codice di A.dll, ha fatto riferimento direttamente a B.dll (andando a Progetto> Riferimenti> Aggiungi B.dll). Tuttavia il mio App.exe ha il codice per caricare A.dll in fase di esecuzione utilizzando Assembly.Load() ecc.Riferimento a una DLL da un'altra DLL
Quindi per ricapitolare, App.exe ---- (caricamento in fase di esecuzione) ---> A.dll - - (riferimento diretto) ---> B.dll
Tutte e tre le cose (App.exe, A.dll e B.dll) risiedono nella stessa directory, ad esempio ExeDir. Ora quello che voglio fare è mettere A.dll e B.dll in una sottodirectory di ExeDir. Posso farlo utilizzando un file App.config che specifica il percorso di A.dll e chiede all'App.exe di caricare A.dll da quel percorso. Fin qui tutto bene.
Tuttavia il problema è che quando faccio questo, .NET mi dà un errore dicendo che non è possibile trovare B.dll che si trova nella stessa directory di A.dll. Se lo spostamento nella directory originale (la stessa directory di App.exe), quindi funziona correttamente. Il che significa che posso mettere A.dll in una sottodirectory, ma B.dll deve essere nella directory originale.
Esiste un modo per mantenere entrambe le DLL nella sottodirectory?
Grazie per la risposta D Stanley. Ma sono un po 'in perdita qui. Puoi dirmi per favore che cosa dovrei fare esattamente qui? Solo per specificare questo elemento con il percorso dell'assembly? – Sach
Sì relativo al tuo EXE. Ad esempio, nell'esempio MSDN il raccoglitore cercherà di default nella cartella 'BIN', ma cercherà anche la cartella' bin2', la cartella 'bin2 \ subbin' e la cartella' bin3'. Sostituisci 'bin; bin2 \ subbin; bin3' con la cartella (relativa all'EXE) in cui si trovano A.dll e B.dll. Notare che non è più necessario specificare il percorso di A.dll se è incluso nel file percorso di sondaggio. –
Grazie Stanley, l'ho fatto funzionare! È stata colpa mia se non ho spiegato il mio problema completo qui. Il motivo per cui volevo le DLL in cartelle separate è che potrei avere diversi A.dll diversi (contenuto diverso) e ognuno di essi può fare riferimento a B.dll. Quindi volevo implementare un codice più sicuro, in modo tale che se A.dll diverso volesse riferirsi a B.dll, il quale potrebbe anche variare all'interno. Ma sembra che non possa essere fatto. Comunque, grazie!Hai risposto alla mia domanda originale. – Sach