2015-06-17 13 views
30

Su un nuovo Win8.1 reinstallare, con tutto il mio codice ripristinato dal backup, sto improvvisamente ora ricevendo un avviso di Visual Studio quando costruire il progetto principale della mia soluzione:mscorlib conflitto durante la generazione

Trovati conflitti tra diverse versioni dello stesso assembly dipendente che non è stato possibile risolvere. Questi conflitti di riferimento sono elencati nel log di compilazione quando log verbosity è impostato su dettagliato.

ho impostato il livello di log di output per dettagliata e ho trovato un paio di voci come questo:

C'era un conflitto tra "mscorlib, Version = 4.0.0.0, Culture = neutral, PublicKeyToken = b77a5c561934e089 "e" mscorlib, Version = 2.0.5.0, Culture = neutral, PublicKeyToken = 7cec85d7bea7798e, Retargetable = Yes ". "mscorlib, Version = 4.0.0.0, Culture = neutral, PublicKeyToken = b77a5c561934e089" è stato scelto perché aveva una versione più alta.

Il problema è che, non sto riferimento mscorlib ovunque nella soluzione-vecchio o nuova. Ho un paio di app sul mio computer che richiedono .NET 3.5, ma non riesco a vedere come ciò possa essere correlato.

Una differenza: la vecchia installazione Win8.1 su cui NON si verificava questo avviso era una macchina autonoma; questa volta sono entrato nel dominio. Non so se questo faccia la differenza (non riesco a vedere come), ma ho pensato di doverlo menzionare almeno.

risposta

18

Sono stato in grado di risolvere questo problema emettendo un comando update-package -reinstall nella console di Gestione pacchetti.

+1

Man - mi sta tormentando per sempre. Grazie per il consiglio! –

+1

@ Dr.C.Hilarius: YW, felice che abbia funzionato. – InteXX

+8

Stai attento, l'aggiornamento di tutti i pacchetti nella tua soluzione potrebbe causare altri problemi, assicurati di poter tornare a una buona versione se va storto! – user1069816

7

Sono stato in grado di risolvere questo problema eliminando il mio file ".suo" della mia soluzione e quindi riaprendo la soluzione. Quindi ricostruisco la soluzione e il problema è sparito.

Il file ".suo" si trova nella cartella ".vs", che è ciò che di solito elimino.

Buona fortuna!

+0

Questo sembra un buon trucco, certamente meno costoso e meno rischioso di una reinstallazione completa del pacchetto. Ci proverò la prossima volta che appare (che sicuramente succederà prima o poi). – InteXX

+0

È stato l'unico modo che ha funzionato per me, quando ho aggiornato uno dei pacchetti specifici che avevo problemi (System.Net.Http), mscorlib, System.Core e System mostravano ancora conflitti in modalità dettagliata di output. Quando ho eliminato il .suo e aperto di nuovo, i messaggi erano spariti. –

21

Avere diverse versioni di un pacchetto Nuget su diversi progetti può causare anche questo problema. Assicurarsi che tutti i pacchetti hanno la stessa versione:

  1. (all'interno di Visual Studio) Fare clic destro sulla soluzione
  2. Cliccare sulla gestire i pacchetti Nuget per soluzione
  3. Cliccare sulla Consolida scheda
  4. Per ogni pacchetto nella scheda Consolida, aggiornare il pacchetto alla stessa versione per ogni progetto.
+0

questo è il modo giusto per farlo. ha funzionato benissimo per noi - mostra chiaramente quali pacchetti hanno più versioni e fornisce un metodo con un clic per risolvere i problemi specifici - molto più sano di una reinstallazione completa. – geekzster

+3

@memetolsen: Cosa succede se nella scheda "Consolida" non ci sono pacchetti da aggiornare? Qualche altra raccomandazione? –

1

Seguendo il consiglio di Memet Olsen usando comunità VS2017 ... quasi identico:

  • destro Click soluzione in Esplora soluzioni.
  • Selezionare "Gestisci pacchetti Nuget per soluzione"
  • Controllare i pacchetti.Se qualcuno di loro ha una freccia rivolta verso l'alto anziché un segno di spunta verde usa il pulsante "aggiorna"
1

Ho provato tutto quanto segue, ma nessuno ha risolto il problema.

  1. il comando "update-package -reinstall".
  2. Aggiornamento e pacchetto tramite scheda Consolida.
  3. Rimozione del file ".suo".

Tuttavia, il mio problema era un caso diverso, suppongo che la nuova versione del pacchetto Xamarin.Forms abbia utilizzato una versione diversa di mscorlib. quindi l'ho declassato e funziona perfettamente.

Suggerisco di provare tutte le soluzioni di cui sopra e anche cercare di trovare quale pacchetto è in conflitto.

Problemi correlati