2010-10-01 3 views
4

Ceci est similaire à déjà créé fil ici: Mixed mode assembly in .NET 4Exécution .NET 3.5 construit des ensembles de mode mixte dans .NET 4 à l'aide de configuration de l'application nécessite Framework 3.5 et

Utilisation de la configuration de l'application, j'ai pu forcer les assemblées pour fonctionner sur .NET 4. Sur une machine XP, j'ai installé juste le .NET 4 (sans .NET 3.5 ou 2.0) et essayé d'exécuter l'application construite. Il ne parvient pas à charger l'assembly en mode mixte construit dans le framework 3.5 dans .NET 4 sans le framework .NET 3.5 sur la machine. Pourquoi devrait-il dépendre de .NET 3.5 quand je force l'application à fonctionner sur .NET 4 en utilisant App config?

Répondre

3

Vous rencontrez ce problème car .NET 3.5 utilise le Common Language Runtime (CLR) version 2 et .NET 4.0 s'exécute sur CLR v4. Par conséquent si votre assembly a été construit dans .NET 3.5, il fonctionnera seulement sur un ordinateur qui a CLR v2.

Longue histoire courte. Compilez votre assembly .NET 3.5 en tant qu'ensemble .NET 4, sinon installez .NET 3.5 sur l'ordinateur cible.


Vous pouvez voir ce site pour plus d'informations:

3

La raison en est que la manière dont il se lie à des ensembles en mode mixte. Assurez-vous d'utiliser le useLegacyV2RuntimeActivationPolicy option = « true » dans la configuration de démarrage de votre fichier app.config (que je suppose ressemble à ce qui suit):

<startup useLegacyV2RuntimeActivationPolicy="true"> 
    <supportedRuntime version="v4.0.30319" /> 
    <supportedRuntime version="v2.0.50727" /> 
</startup> 

Voir aussi: What does 'useLegacyV2RuntimeActivationPolicy' do in the .NET 4 config?

Questions connexes