ASP.Net erreur: “Le type ‘foo’ existe dans les deux ”temp1.dll“ et ”temp2.dll" (pt 2)

Solution:

J'avais aussi déplacé ashx et asmx fichiers en même temps comme ça. L'attribut de Classe de la WebService/WebHandler directives ont été mis au mal de l'espace de noms. La morale de l'histoire est de s'assurer que vous affichez le balisage de tous as*x les fichiers que vous modifiez l'espace de noms en cliquant droit dessus et en choisissant "Afficher le Balisage".


Je rencontre le même problème que dans cette question et ce lien, mais aucune des réponses fixe mon problème. (edit: Réglage du web.config lot attribut fonctionne, mais c'est un coverup, pas une solution)

Le problème, je vais avoir, c'est avec un Contrôle Utilisateur que j'ai déplacé dans le répertoire racine d'un sous-répertoire dans le même projet d'Application Web. Ça marchait bien avant que je l'ai déplacé. Quand je l'ai déplacé, il a commencé à me donner le message d'erreur.

C'est dire que le nom de la classe existe dans les deux dll fichiers Temporaires ASP.NET les Fichiers. Bien sûr, quand j'ai ouvert Réflecteur, c'est dans deux dll.

Si je renommer la classe et le fichier ascx, tout fonctionne bien. Pas de usages du nom original existent dans les fichiers de l'ensemble de mon application. Quand j'ai renommer le fichier, j'ai ouvert tous les fichiers dll Temporaire ASP.NET les Fichiers avec Réflecteur, et l'absence de références à l'original du nom de la classe existe.

Où est donc ce fantôme de référence provenant de comment puis-je résoudre ce problème?

Mise à jour: j'ai littéralement grepped chaque fichier dans mon répertoire de travail pour la solution et mon répertoire temp pour l'ancien nom de la classe et supprimé tous les fichiers qu'il contenait. J'ai ensuite renommé en arrière à l'original, brisé nom et que j'ai toujours l'erreur.

Erreur de serveur dans l'Application'/'.
Erreur De Compilation Description: Une
erreur s'est produite lors de la compilation
d'une ressource nécessaire à ce service
demande. Veuillez consulter les informations suivantes
spécifique détails de l'erreur et de modifier votre
le code source de façon appropriée.

Erreur du compilateur ssage: CS0433: Le type
'ASP.dashboard_badusercontrol_ascx'
existe dans les deux 'c:\Docunts et
Settings\moi\Local
Settings\Temp\Temporary ASP.NET
Files\root\3c2b7e1f\2e8a7620\App_Web_badusercontrol.ascx.a57ad085.iljdmp1p.dll'
et 'c:\Docunts and Settings\moi\Local
Settings\Temp\Temporary ASP.NET
Files\root\3c2b7e1f\2e8a7620\App_Web_bhdqaimy.dll'

Source De L'Erreur:

Ligne 1098: Ligne 1099:
[Système.Diagnostics.DebuggerNonUserCodeAttribute()]
Ligne 1100: privé
global::ASP.dashboard_badusercontrol_ascx
@__BuildControlMyBadUserControl() {
Ligne 1101:
global::ASP.dashboard_badusercontrol_ascx
@__ctrl; Ligne 1102:

Fichier Source: c:\Docunts et
Settings\moi\Local
Settings\Temp\Temporary ASP.NET
Files\root\3c2b7e1f\2e8a7620\App_Web_foo.aspx.a57ad085.1nw6dais.0.cs
Ligne: 1100


Edit:
Ok, j'ai donc fait des tests un peu plus sur ce qui fonctionne et ne fonctionne pas.
Disons que le nom de fichier d'origine était "BadUserControl.ascx" dans l'espace de noms "MyNamespace".

J'ai déplacé le fichier dans un répertoire appelé "NewDirectory" et changé en l'espace de noms "MyNamespace.NewDirectory". Il n'y a pas de copies de "BadUserControl.ascx" n'importe où ailleurs sur mon disque dur. J'ai vérifié mon TFS l'histoire pour assurer la SEULE différence est l'ajout de ".NewDirectory" à l'espace de noms dans le balisage et les fichiers code-behind.

À l'intérieur de cet espace de noms sont deux autres contrôles utilisateur nommé "OtherUserControl" et "AnotherUserControl".

Cette situation d'échec:
J'ai 2 Registre des directives:

<%@ Register src="BadUserControl.ascx" tagname="BadUserControl" tagprefix="uc1" %> 
<%@ Register src="OtherUserControl.ascx" tagname="OtherUserControl" tagprefix="uc2" %>

Ces situations de travail:

  1. Je garde "BadUserControl.ascx" nommé comme l'est.
    J'ai 1 directive de Registre sur une page dans le même espace de noms:

    <%@ Register src="BadUserControl.ascx" tagname="BadUserControl" tagprefix="uc1" %>
  2. - Je changer "BadUserControl.ascx" à "GoodUserControl.ascx"
    J'ai 2 Registre des directives:

    <%@ Register src="GoodUserControl.ascx" tagname="GoodUserControl" tagprefix="uc1" %>
    <%@ Register src="OtherUserControl.ascx" tagname="OtherUserControl" tagprefix="uc2" %>
  3. 2 Registre des directives sans BadUserControl.ascx à tous:
    <%@ Register src="AnotherUserControl.ascx" tagname="AnotherUserControl" tagprefix="uc1" %>
    <%@ Register src="OtherUserControl.ascx" tagname="OtherUserControl" tagprefix="uc2" %>
Tout et tout le débogage suggestions sont les bienvenues dans une tentative de gagner la prime.
Pourriez vous s'il vous plaît inclure l'exact du message d'erreur de compilation que vous obtenez? Il est difficile de dire à partir de votre description si la Dll en jeu sont générés les assemblées ou à GAC/bin assemblées.
Il y a l'erreur d'info pour vous.

OriginalL'auteur Greg | 2010-04-07