2013-04-12 5 views
9

sto ottenendo il seguente errore, in modo intermittente:ambiguo riferimento Errore

Impossibile caricare file o l'assembly 'com.mycompany.myapp' o una delle sue dipendenze. Il file manifest dell'assembly individuato non corrisponde al riferimento all'assembly .

Ho una libreria di Ajax controlli utente che ho costruito e compilato a una DLL. Questo progetto ha un riferimento al Progetto A (com.mycompany.myapp). La mia applicazione web principale ha un riferimento a questa DLL e ha anche un riferimento al Progetto A. A volte, questo errore si verifica quando provo a ricostruire la mia applicazione web. Sembra che i riferimenti al Progetto A non siano sincronizzati tra la DLL e l'applicazione web.

Questo problema può essere risolto solo ricostruendo la DLL, rimuovendo il riferimento alla DLL dall'applicazione Web, aggiungendo nuovamente il riferimento e quindi ricreare l'applicazione Web. Qualcuno può spiegare perché questo si sta verificando e come evitare che questo errore si verifichi?

Sto cercando una soluzione che consenta di risolvere questo problema in modo che possa distribuire questa DLL senza preoccuparsi che debba essere ricostruita e distribuita in modo intermittente.

+0

Provare a ricaricare il gruppo, rimuoverlo dai riferimenti e aggiungerlo di nuovo. Questo dovrebbe risolverlo. – IWIH

risposta

1

Se si dispone di tutti i vostri progetti all'interno della stessa soluzione, è necessario fare in modo che siano tutti i riferimenti del progetto e non il file riferimenti. Puoi verificarlo facendo clic con il pulsante destro del mouse sul progetto e andando su proprietà => riferimenti.

Nel tuo elenco di riferimento vedrai una colonna denominata "copia locale". Se impostato su false, significa che stai facendo riferimento a un file anziché a un progetto (che non aggiorna la DLL dopo averlo creato). Per risolverlo, rimuovere il riferimento e aggiungerlo di nuovo (assicurandosi di fare riferimento alla soluzione, non facendo riferimento alla DLL sul proprio disco rigido).

Se non si dispone di tutti i progetti all'interno della stessa soluzione, si tratta di un comportamento normale. Supponi che la tua libreria di controlli Ajax sia al di fuori della soluzione.

La situazione di partenza dovrebbe essere qualcosa di simile:

  • Ajax fa riferimento a una (versione 1)
  • Realizzazioni A (versione 1)
  • Realizzazioni Ajax (versione 1)

Dopo aver creato la soluzione (senza il progetto Ajax al suo interno) si avrà la seguente situazione:

  • Ajax fa riferimento a una (versione 1)
  • Realizzazioni A (versione 2)
  • Realizzazioni Ajax (versione 1)

Come si può vedere, il compilatore deve improvvisamente un riferimento ad un versione 1 e versione 2, quindi è impossibile e ti dà un errore. Questo spiegherebbe anche perché funziona quando si esegue una ricostruzione e si elimina la DLL e la si aggiunge di nuovo.

La soluzione qui è quella di aggiungere il progetto Ajax alla soluzione e ricostruirlo ogni volta.

1

Verificare che l'assembly "com.mycompany.myapp" non abbia un attributo AssemblyVersion nel relativo file AssemblyInfo.cs o che la versione non abbia asterischi che portano alla generazione automatica di versioni.

Solo un pensiero.