PDA

View Full Version : [VS Express 2010 C#] Errore build


teol801
16-08-2012, 09:07
Ciao a tutti, mi trovo in una situazione molto strana.
La mia soluzione è composta da alcuni progetti che utilizzano diverse versioni del framework (2.0 e 3.5).
Uno di questi, il progetto xxxx, ha i riferimenti al progetto yyyy. La compilazione di entrambi funziona.
Il problema nasce importando un progetto zzzz tra i cui riferimenti ci sono xxxx e yyyy. La compilazione non va a buon fine e l'errore è quello in oggetto con l'aggiunta "probabilemte manca un riferiemtno ad un assembly".
Togliendo il riferimento al progetto yyyy dal progetto zzzz gli errori sono i medesimi.
La cosa strana che su un altro pc la compilazione funziona, l'unica differenza è data dai 64 bit di quest'ultimo.
Le versioni del VS Express sono le medesime e pure quelle dei vari framework installate ed ovviamente il SO Windows 7 pure.
Nelle proprietà dei progetti le versioni del framework sono le seguenti: xxxx->2 ; yyyy->3.5 ; zzzz->3.5
Tra gli avvisi compare però questo messaggio: "impossibile risolvere il riferimento primario "yyyy" perché include una dipendenza indiretta all'assembly .NET Framework "mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" la cui versione "4.0.0.0" è successiva alla versione "2.0.0.0" nel framework di destinazione corrente".
Infatti se tra le proprietà del progetto zzzz cambio la versione del framework da 3.5 a 4 il tutto si risolve.
Spero di aver passato tutte le informazioni utili a presentare lo scenario al quanto strano.:muro: :muro: :muro:
In attesa di eventuali suggerimenti ringrazio anticipatamente. :help:

teol801
17-08-2012, 09:50
Nessun'idea?
UP!

gugoXX
18-08-2012, 13:49
Un consiglio e' quello di migrare tutto a 4.0, se puoi.

PEr quanto riguarda il tuo problema, sappi che sia 2.0 che 3.5 fanno uso del framework .net 2.0
Mentre invece 4.0 fa uso del framework 4.0
Ne consegue che una dll compilata in 2.0 non potra' avere tra le reference, ne caricare e usare dinamicamente, una qualsiasi dll che e' stata compilata per framework 4.0
Il viceversa invece si puo' fare. (che non e' scontato. Non si poteva all'inizio tra 2.0 e 1.0, poi e' stato aggiunto)

Il secondo consiglio e' quello di tenere un progetto tutto sotto lo stesso framework.

Oppure, per fare quello che vuoi, devi cercare tutti i riferimento a dll del framework 4.0 e sostituirli con i relativi al framework 2.0 (2.0 o 3.5)
nel tuo caso mscorlib.
Controlla meglio le versioni framework dei progetti che hai elencato, ho idea che uno sia 4.0, oppure che sia stato creato inizialmente per errore con 4.0 e poi corretto successivamente, ma che alcune dll siano rimaste spurie.

teol801
20-08-2012, 08:36
Un consiglio e' quello di migrare tutto a 4.0, se puoi.

PEr quanto riguarda il tuo problema, sappi che sia 2.0 che 3.5 fanno uso del framework .net 2.0
Mentre invece 4.0 fa uso del framework 4.0
Ne consegue che una dll compilata in 2.0 non potra' avere tra le reference, ne caricare e usare dinamicamente, una qualsiasi dll che e' stata compilata per framework 4.0
Il viceversa invece si puo' fare. (che non e' scontato. Non si poteva all'inizio tra 2.0 e 1.0, poi e' stato aggiunto)

Il secondo consiglio e' quello di tenere un progetto tutto sotto lo stesso framework.

Oppure, per fare quello che vuoi, devi cercare tutti i riferimento a dll del framework 4.0 e sostituirli con i relativi al framework 2.0 (2.0 o 3.5)
nel tuo caso mscorlib.
Controlla meglio le versioni framework dei progetti che hai elencato, ho idea che uno sia 4.0, oppure che sia stato creato inizialmente per errore con 4.0 e poi corretto successivamente, ma che alcune dll siano rimaste spurie.

Ok grazie del consiglio, proverò a verificare.

teol801
20-08-2012, 12:06
Risolto!