2009-07-13 9 views
0

Je suis actuellement en train de développer un composant logiciel enfichable MMC, mais j'ai rencontré un gros problème - il est fait en utilisant le framework .Net 4.0; et MMC charge une version précédente de l'exécution.MMC .Net Runtime Version

L'utilisation d'une ancienne version de l'environnement d'exécution n'est pas vraiment une option, car le projet entier est écrit pour 4.0 (jusqu'à présent 5000 LOC); c'est simplement un front de gestion (imaginez que: P).

J'ai vérifié la clé de registre MMC et il y a la version v4.0.20506. Je ne trouve aucune autre configuration d'interopérabilité MMC .Net nulle part.

Des idées?

+0

Je suppose que vous utilisez Dev10 pour développer votre addin, non? aussi courez-vous sur une machine 64 bits? – mfawzymkh

+0

@ mfawzymkh yep - c'est où je suis assis –

Répondre

3

Après avoir lu sur la question un peu plus loin, je peux confirmer que le processus hôte doit prendre en charge explicitement plusieurs runtimes via some new APIs dans .NET 4.0.

Je doute que MMC (même dans Windows 7) supporte ces API, puisque .NET 4.0 est également en version bêta. Dans la chance peu probable qu'il le fait, vous pouvez le forcer à l'utiliser en utilisant l'élément supportedRuntime dans votre configuration:

<configuration> 
    <startup> 
     <supportedRuntime version="v4.0.20506"/> 
    </startup> 
</configuration> 

A défaut, cependant, je crains que vous êtes hors de la chance. Votre seul choix sera alors de changer votre projet pour cibler .NET 2.0. Vous pouvez également écrire un composant logiciel enfichable MMC non géré qui héberge son propre environnement d'exécution et charge celui qui est managé. À quel point avez-vous besoin de ces fonctionnalités .NET 4.0?

+0

Merci. Je vais donner un coup de feu - à quel point ai-je besoin d'eux? 6000 LOC que j'ai écrit personnellement qui ont depuis été mis à niveau vers Framework 4 ... –

+0

Combien de ces lignes ont une dépendance .NET 4.0? Utilisez-vous EF4, WF4, le mot clé dynamique ou l'une des nouvelles API? Sinon, vous pouvez probablement lancer contre 2.0 avec très peu de changements. –

+0

(par 2.0 je veux dire 2.0 - 3.5) –

1

... ou vous pouvez forcer MMC à utiliser v4.0 avec la variable d'environnement suivant:

set COMPLUS_Version=v4.0.30319 
1

Microsoft a depuis affiché cet article concernant les versions MMC et CLR http://msdn.microsoft.com/en-us/library/windows/desktop/gg983006(v=vs.85).aspx Fondamentalement, vous créez une variable d'environnement magique qui dirige le démarrage CLR vers un fichier de configuration spécifique à votre composant logiciel enfichable MMC.

Personnellement, je pense que cela aurait facilité la vie de tout le monde s'ils avaient simplement changé MMC.EXE pour utiliser CLR 4 mais pour une raison quelconque, ils ont décidé de ne pas aller dans cette direction.