2009-02-05 8 views
12

J'ai renommé mon projet de MyProjectName en MyNewProjectName. J'ai fait une recherche/remplacement complet sur la solution et j'ai aussi changé le projet de test. En Default.aspx.cs je reçois un InvalidOpterationException avecRenommage de l'espace de noms ASP.NET MVC

"Le nom du contrôleur 'Home' est ambigu entre les types suivants: MyNewProjectName.Controllers.HomeController MyProjectName.Controllers.HomeController."

Comment résoudre ce problème? Merci

Répondre

30

Avez-vous essayé de reconstruire (clic droit sur le projet, et sélectionnez "Reconstruire")? Vérifiez également la poubelle pour vous assurer que seul l'assemblage portant le nouveau nom est présent. Vérifiez également les propriétés du projet pour vérifier que le nom de l'assembly est sorti. Si vous n'êtes pas sûr du nom de l'assembly en sortie, supprimez toutes les DLL de bin et reconstruisez-les.

+1

J'ai fait une reconstruction et même un nettoyage.J'ai fait une recherche de fichiers Windows et apparemment, VS n'a pas tout effacer –

+1

Ceci est ennuyeux - Je viens d'avoir le même problème Qu'est-ce qu'un PITA Qu'est-ce que "clean" est censé faire ??? –

+1

Je suppose qu'il a supprimé les fichiers avec le nom du projet , pas tous les DLLs. –

8

Vous devez vérifier votre dossier/bin dans votre projet Web MVC, et soit supprimer tout ce qui s'y trouve et en faire une nouvelle génération, soit supprimer l'ancienne DLL (MyProjectName.dll). Le runtime ASP.Net MVC utilise la réflexion pour déterminer à quel contrôleur une requête doit être transmise en fonction des informations de routage, et il trouve deux contrôleurs qui correspondent aux critères (portent le même nom), et chacun est dans un assemblage différent. C'est pourquoi vous obtenez l'exception.

Effectuer un Le nettoyage ne semble pas effacer le dossier bin. Vous devez donc supprimer le fichier manuellement.

+1

Ce sont les vieilles assemblées à la poubelle. Bon appel. +1 –

+1

Merci .. rien n'apprend mieux que l'expérience durement acquise .. –

2

Double-cliquez ou faites un clic droit sur MyProject et ouvrez. Dans les paramètres de l'application, modifiez le nom de l'assembly et l'espace de noms racine pour qu'ils correspondent à votre nom de projet renommé.

0

Clic droit sur le projet, choisissez « Ouvrir le dossier dans l'Explorateur Windows.

Supprimer les « objets » dans OLDPROJECTNAME/bin et/obj

5

Quant à moi j'avais référence dans web.config le dossier View, une fois qu'il a été changé tout a bien fonctionné!

+1

C'était mon problème. J'ai changé l'Assembly et l'Namespace pour mon projet et je n'ai pas pu charger une page. La mise à jour de l'entrée de l'espace de noms dans le fichier web.config Views était la pièce nécessaire. Merci! –