2014-05-22 17 views
13

Come posso fare un progetto 4.0 con un riferimento 4.5. Nei test di unità, non posso costruire la soluzione e mi sta dando questo avvertimento.Riferimento a .net framework 4.5.1 assembly in un progetto 4.0

Attenzione 2 Il riferimento primario "PR.Wallet" non può essere risolto perché è stato costruito contro il" .NETFramework, Version = v4.5.1" quadro. Questa è una versione superiore rispetto al framework attualmente indirizzato ".NETFramework, Version = v4.0". PR.Wallet.Tests

+2

L'unica cosa che puoi fare è aggiornare il progetto di test dell'unità a 4,5, non potrai fare riferimento all'indietro. –

risposta

25

.Net framework (v2.0 o superiore) non sonoforward compatible.. Non è possibile fare riferimento a un assembly .Net 4.5 nel progetto .Net 4.0.

See: Version Compatibility in the .NET Framework

Si può anche vedere: Version Compatibility

Il grado di supporto .NET Framework per avanti e indietro compatibilità è specifiche della versione. .NET Framework supporta sia la compatibilità con backward e forward per le applicazioni create utilizzando solo la versione 1.1 . Non supporta la compatibilità diretta nelle applicazioni create utilizzando la versione 2.0. Nel contesto di .NET Framework, la compatibilità con le versioni precedenti indica che un'applicazione creata con utilizzando una versione precedente di .NET Framework verrà eseguita in una versione successiva di . Viceversa, la compatibilità diretta indica che un'applicazione creata utilizzando una versione successiva di .NET Framework verrà eseguita su una versione precedente di .

.NET Framework fornisce un elevato grado di supporto per compatibilità con le versioni precedenti. Ad esempio, la maggior parte delle applicazioni create con utilizzando la versione 1.0 verrà eseguita nella versione 1.1 e le applicazioni che utilizzano la versione 1.1 verranno eseguite sulla versione 2.0. .NET Framework supporta anche la compatibilità diretta solo per la versione 1.1. Tuttavia, per la compatibilità diretta potrebbe essere necessario modificare un'applicazione in modo che l'applicazione venga eseguita come previsto. Le applicazioni create con la versione 2.0 non verranno eseguite su versioni precedenti di .NET Framework. Sia per la compatibilità con backward e forward , una modifica a .NET Framework che aiuta a migliorare la sicurezza, la correttezza o la funzionalità potrebbe anche causare problemi di compatibilità .

7

Sembra che sia necessario modificare il framework della libreria. E poiché è solo un progetto di unit test, non vedo perché non lo faresti.

In Visual Studio:

  • fare clic destro sul vostro progetto
  • Selezionare Proprietà
  • Selezionare la scheda Applicazione
  • modificare il quadro di destinazione per il quadro desiderato

Se non vedi .NET Framework 4.5.1 come opzione, assicurati di averlo installato.

+1

beh se non funziona sul test, non funzionerebbe sul diritto vero? – DevEstacion

+0

Il modo in cui ho letto l'errore è che il tuo PR.Wallet ha come target 4.5.1 e che il PR.Wallet.UnitTests ha come target 4.0. Se si ritarda il progetto di test su 4.5.1, si * dovrebbe * essere in grado di caricare la libreria. –

4

Non è possibile fare riferimento a un assieme 4.5.1 in un progetto destinato alla 4.0. Ma ... è possibile chiamare il metodo di un assembly 4.5.1 in un progetto che ha come bersaglio 4.0 chiamando in modo dinamico, supponendo 4.5.1 è installato:

var assembly= Assembly.LoadFrom(...); 
var type = assembly.GetType(...); 
var method = type.GetMethod(...); 
var res = method.Invoke(null, args); 

Nota che ci possono essere limitazioni di questo approccio , ma ho trovato utile per chiamare le routine di Roslyn mentre si utilizza ancora VS2010.

Problemi correlati