Ho un'applicazione .NET che sembra avere alcune delle sue versioni di dipendenza che cambiano tra il debug e l'esecuzione come un'app di rilascio installata. Mi concentrerò solo sull'assemblaggio Castle.Core per i miei dettagli, ma lo stesso problema si verifica anche con un paio di altri. Un pacchetto NuGet che sto utilizzando richiede Castle.Core come dipendenza (tutti i casi del mio problema sono legati agli assembly originati da NuGet, nel caso in cui sia importante).Modifica Dipendenze di montaggio dopo l'installazione
In Visual Studio, quando installo il pacchetto NuGet con la dipendenza Castle.Core, tutto viene eseguito correttamente, sia nelle configurazioni Debug che Release. Vedo che il riferimento al progetto Castle.Core fa riferimento alla versione 3.3.0.0. Tuttavia, quando ho impacco tutto generato dalla configurazione di rilascio utilizzando InstallShield e installare l'applicazione (con tutti i gruppi che vivono nella stessa directory del programma), ottengo questo errore di runtime:
Could not load file or assembly 'Castle.Core, Version=3.2.0.0, Culture=neutral, PublicKeyToken=407dd0808d44fbdc' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)
Il pacchetto NuGet elenca la sua dipendenza da Castle .Core come (≥3.2.0.0 & & < 4.0.0.0). Sia 3.2.0.0 che 3.3.0.0 soddisfano queste condizioni.
Se eseguo manualmente il downgrade di Castle.Core alla versione 3.2.0.0, il riferimento del mio progetto mostra che è effettivamente stato declassato. Ma quando ho eseguito il progetto in Visual Studio, ottengo:
Could not load file or assembly 'Castle.Core, Version=3.3.0.0, Culture=neutral, PublicKeyToken=407dd0808d44fbdc' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)
con un'eccezione interna:
Could not load file or assembly 'Castle.Core, Version=3.2.0.0, Culture=neutral, PublicKeyToken=407dd0808d44fbdc' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)
Tuttavia, se poi pacchetto in un programma di installazione e lanciarlo come un'applicazione installata , Funziona.
Per me, è come se l'operazione di assemblaggio degli assembly in un programma di installazione causasse la modifica delle versioni delle dipendenze. Non riesco a immaginare che sia il caso, ma sto avendo problemi a trovare una spiegazione migliore.
Qualcuno può spiegare cosa sta succedendo qui e come posso risolvere il problema?
Non l'avrei mai capito, grazie per aver risposto alla tua domanda. –
Mi ha salvato un sacco di tempo! –
Quindi la soluzione era includere 'App.config' nel tuo programma di installazione? – Jess