2010-10-12 2 views
5

Possiedo un progetto .Net 2.0 che dipende da molte DLL di terze parti .Net (tutte ovviamente destinate a .Net 2.0).Aggiornamento di un progetto .Net 2.0 a .Net 4.0

Se dovessi migrare il mio progetto in VS2010 e indirizzare il framework .Net 4.0, la mia app continuerà a costruire? O si lamenterà dei riferimenti alle DLL 2.0 .Net e dovrò trovare le versioni di .Net 4.0 di queste DLL di terze parti?

+0

La risposta di Aaron sembra corretta. –

+0

Dopo alcuni test, ecco cosa ho scoperto: l'applicazione ASP.Net e CmdLine hanno funzionato dopo il retargeting su .Net 4.0. Non è stato necessario apportare modifiche al file di configurazione. Inoltre, le DLL di terze parti (create con .Net 2.0) che stavo usando per generare file PDF funzionavano anche come prima con .net 3.5. Aggiornerà se trovo qualche trucco –

risposta

3

Sì, funzionerà. Assicurarsi di aver installato sia .NET 2 che 4 FW sulle macchine che eseguono l'applicazione.

+0

Ho entrambi i framework .net 2 e .net 4 installati sulla mia macchina. Ma ottengo l'errore "Impossibile caricare il file o l'assembly" Microsoft.Practices.EnterpriseLibrary.Data, Version = 3.1.0.0, Culture = neutral, PublicKeyToken = b03f5f7f11d50a3a 'o una delle sue dipendenze.La definizione manifest di assembly localizzata non corrisponde riferimento di assembly. (Eccezione da HRESULT: 0x80131040) " –

+0

@Rajah ha cercato Microsoft.Practices.EnterpriseLibrary.Data e ha detto che è per 2.0 e 3.0 ma 3.0 è necessario per cose specifiche ... hai anche 3 in là? –

+0

Sembrava VS 2010, aggiornato automaticamente il ref dll su V5 (che è anche installato sulla mia macchina). Una volta rimosso e letto nella versione 3.0 di EntLib, ha iniziato a funzionare senza problemi. –

2

Se è necessario utilizzare gruppi più anziani con 4.0 (Mixed-Mode) potrebbe essere necessario aggiungere quanto segue al <yourappname>.config:

<startup useLegacyV2RuntimeActivationPolicy="true"> 
    <supportedRuntime version="v4.0"/> 
</startup> 

ho dovuto fare questo quando ho tentato di caricare alcuni vecchi 1.1 assemblee in il mio programma IronPython (NET 4.0) ed ha ottenuto il seguente errore:

"Mixed mode assembly is built against version 'v1.1.4322' of the runtime and cannot be loaded in the 4.0 runtime without additional configuration information." 

Aggiunta di quelle tre righe al mio file ipyw.exe.config mi permetta di correre queste assemblee in modalità mista.