2010-05-13 8 views
1

J'utilise un système de gestion de contenu dont l'interface d'administration utilise MVC 1.0. Je voudrais construire les parties publiques du site en utilisant MVC 2.Utilisation de deux versions du même assembly (system.web.mvc) en même temps

Si je me réfère simplement à System.Web.Mvc version 2 dans mon projet, le mode admin ne fonctionne pas comme référence à System.Web.Mvc. ViewPage créé par les vues dans l'interface d'administration est ambigu:

Le type 'System.Web.Mvc.ViewPage' est ambigu: il peut provenir de l'assembly 'C: \ Windows \ assembly \ GAC_MSIL \ System.Web.Mvc \ 2.0.0.0__31bf3856ad364e35 \ System.Web.Mvc.dll 'ou de l'assembly' C: \ Windows \ assembly \ GAC_MSIL \ System.Web.Mvc \ 1.0.0.0__31bf3856ad364e35 \ System.Web.Mvc.dll '. Veuillez spécifier l'assembly explicitement dans le nom du type.

Je pourrais facilement contourner ce problème en utilisant des redirections de liaison pour spécifier que MVC 2 devrait toujours être utilisé. Malheureusement, le mode d'administration des systèmes de gestion de contenu n'est pas compatible avec MVC 2. Je ne sais pas exactement pourquoi, mais je commence à recevoir un tas d'exceptions de référence nulles dans certaines de ses actions quand je l'essaie et les développeurs du CMS qu'il n'est pas compatible avec MVC 2 (pour l'instant). L'interface d'administration accessible via domain.com/admin n'est pas physiquement située dans webroot/admin mais dans le dossier des fichiers du programme sur le serveur et domain.com/admin est routée à cet endroit en utilisant un fournisseur de chemin virtuel. Par conséquent, mettre un fichier web.config distinct dans le dossier admin pour spécifier une version différente de System.Web.Mvc pour cette partie du site n'est pas une option car cela ne fonctionnera pas lors de l'utilisation de l'hébergement partagé.

Quelqu'un peut-il voir une solution à ce problème? Peut-être est-il possible de spécifier que pour certains assemblages, une version différente d'un assembly référencé doit être utilisée? Pourquoi ne pas vous épargner la douleur et utiliser MVC 1 pour votre site public?

+0

Etes-vous capable de mettre à jour l'interface d'administration ou est-ce une tierce partie? –

Répondre

0

L'utilisateur final ne connaîtra aucune différence et il n'y a pas vraiment de problème avec MVC 1

+0

C'est principalement l'assistant DisplayFor() qui pourrait vraiment être utile. Mais à part ça, je peux certainement me débrouiller avec MVC 1. Mais avant cela, je veux explorer d'autres options, si ce n'est pour d'autres raisons que d'apprendre quelque chose. –

+0

Ah oui, l'ancienne stratégie «Utiliser une nouvelle technologie dans un projet pour apprendre une nouvelle technologie». Je l'utilise souvent. :) Si l'assistant DisplayFor() est la raison principale, alors vous pouvez toujours écrire vos propres méthodes d'extension d'aide qui répliquent cette fonctionnalité –

+0

Vous pouvez utiliser les constructeurs d'entrée MVCContrib w/MVC 1.0 http://mvccontrib.codeplex.com/wikipage ? title = InputBuilders & referencedTitle = Documentation – Ryan

1

Nous avons rencontré un problème similaire. La plupart de nos applications utilisent MVC 3.0. Nous utilisons un système de gestion de contenu qui utilise MVC 1.0. Nous avons eu un problème de compatibilité parce que nous essayions de référencer l'un des composants de l'application dans le système de gestion de contenu. Lorsque nous avons mis les deux versions de MVC dans le GAC, cela a résolu le problème.

Questions connexes