2011-03-31 4 views
0

Nous avons un ancien projet .net 1.1 qui utilise un composant tiers. Apparemment, ce composant ne fonctionne pas correctement avec les nouvelles exigences, et il n'y a pas de support du fournisseur. Le fournisseur a proposé d'utiliser un nouveau composant qui fonctionne correctement. Le problème est que ce composant nécessite .net 2.0.comment l'application .net 1.1 peut fonctionner avec .net 2.0 assembly

Le projet est grand et il sera coûteux de faire passer ce projet à 2.0.

Quelles autres alternatives pouvons-nous avoir? Comment l'assemblage 1.1 peut-il appeler l'assemblage 2.0?

Répondre

2

.NET 1.1 ne peut pas charger les assemblys .NET 2.0, car le format interne a changé. Votre application pense essentiellement que l'assembly n'est pas un assembly .NET.

À long terme, ce serait une bonne idée de mettre à jour votre application pour utiliser .NET 2.0 (si ce n'est pas quelque chose de plus récent, puisqu'il existe plusieurs versions de .NET depuis 2.0 maintenant). Cependant, si ce n'est pas une option, vous pouvez créer un fichier .config pour votre exécutable, et dire au CLR de toujours utiliser .NET 2.0 lors de l'exécution de votre application. Ceci devrait permettre à l'assembly .NET 2.0 de se charger, cependant tout changement de version entre .NET 1.1 et 2.0 que votre application utilise provoquera des erreurs.

+0

Pensez-vous que créer un objet wrapper autour de l'assemblage 2.0 avec les fonctionnalités requises et l'exposer comme COM dll est une bonne idée? – baraban

+0

@ user976536 Je ne pense pas que cela fonctionnerait. Avant .NET 4.0, un processus ne peut avoir qu'un seul CLR en cours d'exécution. Si vous essayez de charger l'objet COM à partir de votre application .NET 1.1, il doit charger .NET 2.0 afin de charger l'assembly .NET 2.0. Cela vous donnera une erreur, puisque le .NET 1.1 CLR est déjà chargé dans le processus. – Andy

Questions connexes