2009-08-10 4 views
1

Dans mon projet WAP, le code-behind et le concepteur de chaque .aspx partagent le même espace de nom. Par exemple, mes fichiers Main.Master.cs et Main.designer.cs se trouvent tous deux dans l'espace de noms OurCompany.Web par défaut.Référence ambiguë

Quand je vais à une autre page .aspx et d'utiliser ce qui suit, je reçois une erreur « référence ambiguë » car il ne peut pas décider si je parle de mon code-behind ou fichier de concepteur de cette page maître

<%@ MasterType TypeName="OurCompany.Web.Main" %> 

mais par défaut, c'est ainsi que VS crée des pages .aspx, est-ce que je devrais m'en préoccuper?

Répondre

2

Les fichiers du concepteur sont tous marqués comme des classes «partielles», de sorte qu'ils ne sont pas compilés dans leurs propres types. Je pense que vous avez vraiment 2 classes appelées "OurCompany.Web.Main". Un outil comme Reflector vous permet de naviguer dans vos DLL afin d'en être certain.

+0

Je n'ai pas 2 classes et tous mes codes derrière les classes ont ce problème. Je me demande si j'ai juste besoin de nettoyer ma solution – PositiveGuy

1

Je suppose que vous avez une page maître et une page de formulaire Web avec le même nom sur le code derrière la classe. Et cela empêchera votre site de fonctionner correctement (s'il fonctionne du tout).

Je passerais par mes fichiers aspx.cs et la recherche du nom de la classe main (trouver devrait fonctionner ici). Je parie que vous trouverez deux fichiers avec le nom. Vous devrez changer l'un d'eux à autre chose. Assurez-vous simplement que vous modifiez également les héritages dans la page .aspx et le nom de classe .designer.cs.

+0

mais chaque .aspx.cx montre des types doubles. Non seulement le Master – PositiveGuy

+0

bizarre parce que je viens d'installer cette même structure de la solution à nouveau et maintenant le problème est parti. – PositiveGuy

2

Cela m'est arrivé, votre problème est la compilation JIT créant des "copies" temporaires de vos assemblées dans un répertoire temporaire.

Assurez-vous que chaque déclaration d'espace de noms/classe partielle est "serrée", vérifiez les noms de classe incorrects, les espaces de noms incorrects.

Le problème "vient de disparaître" pour moi aussi. Recréer ou nettoyer la solution le fera probablement. Je voudrais pouvoir être plus utile mais aller nettoyer la source, à la fois manuellement et avec le menu du clic droit probablement aidé.