Il mio progetto si rivolge a .NET 4.5. Non utilizza nuovi metodi 4.5, quindi funziona correttamente sulla macchina con solo .NET 4.0 installato.È possibile creare un'applicazione con .NET 4.5 su .NET 4.0?
Questo va bene fino a quando non ho aggiunto alcuni metodi di estensione e riflessione. Quindi, quando ho eseguito questo programma .NET 4.5 sul computer 4.0, non è riuscito con "System.TypeLoadException: Impossibile caricare il tipo 'System.Runtime.CompilerServices.ExtensionAttribute' dall'assembly mscorlib". Il famoso programma ExtensionAttribute che è stato ben documentato here.
Un altro modo rapido per testare questo è aggiungere la seguente riga. Quindi il programma genererà l'eccezione durante l'esecuzione solo su .NET 4.0.
Console.WriteLine(typeof(System.Runtime.CompilerServices.ExtensionAttribute).Assembly.FullName);
Mi chiedo se c'è un modo per aggirare il problema. Ad esempio, ILMerge (quando si utilizza l'opzione corretta/targetplatform come documentato nel collegamento) modifica effettivamente ExtensionAttribute da mscorlib a System.Core se il progetto è destinato a .NET 4.0 (con 4.5 installato). Ma non sembra funzionare sul progetto mirato a .NET 4.5.
So che questo è un campo lungo. Ma voglio solo vedere se qualcuno ha altre idee dal momento che era così vicino.
Grazie.
Sfortunatamente il mio progetto fa riferimento anche ad altri progetti comuni destinati a .NET 4.5. Quindi VS2012 non mi permetterà di cambiare il mio progetto in 4.0 (a meno che non ci sia un modo per ingannare VS2012?). – Hengyi
@Ian Dovresti scegliere come target 4.5 e distribuire 4.5 o modificare tali progetti. Se hanno come target 4.5, probabilmente useranno nuove funzionalità, quindi avrai bisogno di 4.5 ... –