D'où vient l'erreur CS0433 “Type " X " existe déjà dans les deux A.dll et B.dll ”?
Quand je lance une application web à partir de Visual Studio 2008 SP1 à l'aide du serveur web interne (pas IIS) je reçois l'erreur mentionnée ci-dessus.
Le message d'erreur (fichier source par Défaut.aspx.cs):
Compilateur Message d'Erreur: CS0433: L'
type 'WebApplication3.Site1 " existe dans
les deux
'c:\Windows\Microsoft.NET\Framework\v2.0.50727\Temporary
ASP.NET
Files\root\aa563bcf\59deedc0\App_Web_site1.master.cdcab7d2.muczzy9v.dll'
et
'c:\Windows\Microsoft.NET\Framework\v2.0.50727\Temporary
ASP.NET
Files\root\aa563bcf\59deedc0\assembly\dl3\44c3a3cf\80dd34ed_6968ca01\WebApplication3.DLL'
Le précédent pleine avertissement:
Avertissement: CS0436: Le type
'WebApplication3._Default " dans
'c:\Windows\Microsoft.NET\Framework\v2.0.50727\Temporary
ASP.NET
Files\root\aa563bcf\59deedc0\App_Web_default.aspx.cdcab7d2._tlkwdos.0.cs'
les conflits avec le type importé
'WebApplication3._Default " dans
'c:\Windows\Microsoft.NET\Framework\v2.0.50727\Temporary
ASP.NET
Files\root\aa563bcf\59deedc0\assembly\dl3\44c3a3cf\e096e61c_6568ca01\WebApplication3.DLL'.
En utilisant le type est défini dans
'c:\Windows\Microsoft.NET\Framework\v2.0.50727\Temporary
ASP.NET
Files\root\aa563bcf\59deedc0\App_Web_default.aspx.cdcab7d2._tlkwdos.0.cs'.
Source d'avertissement points d'un fichier intermédiaire App_Web_default.aspx.cdcab7d2._tlkwdos.0.cs:
Line 162:
Line 163: [System.Runtime.CompilerServices.CompilerGlobalScopeAttribute()]
Line 164: public class default_aspx : global::WebApplication3._Default, System.Web.IHttpHandler {
Line 165:
Line 166: private static bool @__initialized;
et ma question: d'où vient-il?
De la webapp (pas de site web!) a un par Défaut.aspx et un Site1.Maître, pas de dépendances. Ils sont presque vides, avec un asp:Label
sur la page. Auparavant, cette webapp a bien fonctionné. Quand j'ai supprimer toutes les références en Défaut.aspx.cs pour le maître, tout va bien. Le maître a un peu de code seulement.
C'est en fait un des nombreux petit feu et oublier de test webapps, donc je ne pouvais pas moins de soins. Mais je n'avais pas vu ça avant, et maintenant je suis curieux de savoir de quoi faire, d'autres puis de copier le code dans un nouveau projet (solution de nettoyage n'aide pas).
Remarque: j'ai lu ce post et quelques autres, ils ne s'appliquent pas.
OriginalL'auteur Abel | 2009-11-18
Vous devez vous connecter pour publier un commentaire.
Théorie
Lorsque ce problème se pas causé par un bogue dans l'application (par exemple, en double nom de la classe):
Ce problème apparaît à présent après un changement est apporté à l'application du projet que les résultats dans une nouvelle construction (p. ex., code de référence//modification de la ressource). Le problème semble résider dans la sortie de cette nouvelle version: pour diverses raisons, Visual Studio n'est pas de remplacer le ensemble contenu de votre application obj/bin dossiers. Il en résulte au moins une partie du contenu de votre dossier bin de l'application en cours de la date.
Lorsque ce problème se produit, l'effacement de l' "Temporaire ASP.NET les Fichiers de ce dossier, à lui seul, ne permet pas de résoudre le problème. Il ne peut pas résoudre le problème, parce que la rassis contenu de votre dossier bin de l'application sont recopiées dans le "Temporaire ASP.NET les Fichiers du dossier" la prochaine fois que votre application est accessible, à l'origine du problème persiste. La clé est de supprimer tous les fichiers existants, et de la force de Visual Studio pour reconstruire chaque objet, de sorte que la prochaine fois que votre application est accessible à la nouvelle de la corbeille les fichiers seront copiés dans le "Temporaire ASP.NET dossier" Fichiers.
Solution
Explication
veuillez considérer ce qui en fait la réponse. Parce que seul le nettoyage de la ASP.NET dossier temp ne va pas aider!
Je suis d'accord, bon point.
Ce qui m'est arrivé avec un non-projet web. Tout simplement en supprimant le bin et obj dossiers fixe.
exactement! J'ai dû supprimer le
obj
etbin
dossiers pour effacer cette erreur.OriginalL'auteur 2Toad
Arrêter w3svc et supprimer tout de
c:\Windows\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files\root\
ajouté
sur Windows 7
c:\Users\{username}\AppData\Local\Temp\Temporary ASP.NET Files\root\
sur serveurs IIS (64 bits) cela peut également se produire. Rechercher:
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files\root
(remplacer v4.0.30319 par le cadre de la version que vous utilisez si une version plus récente sur votre serveur)
Ce qui m'est arrivé dans le passé. Je crois que c'est un problème avec VS où il ne nettoie pas après une session de débogage ou avant de commencer un nouveau. La dernière fois ce qui m'est arrivé avec VS2005 un couple d'années en arrière.
Accepté cela comme réponse parce que c'est une solution. Toutefois, il n'explique pas le "pourquoi". Si je trouve une meilleure solution ou un et la vraie raison, je vais mettre à jour Lyman réponse ou d'ajouter mon propre.
En fait, cette réponse ne fonctionne pas pour moi. Mon projet fonctionne bien il y a quelques semaines, mais j'ai essayé aujourd'hui et montre le dessus de ladite question. J'ai supprimé les fichiers temporaires, comme indiqué ci-dessus (pour Windows 7) et le même problème persiste. Je me demande encore pourquoi...
avez-vous trouvé une autre solution, la solution ci-dessus n'a pas fonctionné pour moi
OriginalL'auteur Alex Polkhovsky
Regarder Hérite de la balise de tous vos aspx pages et des pages maîtres. Les Chances sont, il y a deux classes partielles qui ont le même nom. Changement de l'un et de recompiler.
Voici quelques infos:
http://blogs.msdn.com/b/carloc/archive/2007/06/12/compiler-error-message-cs0433-in-asp-net-2-0.aspx
OriginalL'auteur NitroxDM
Ce qui pourrait arriver si vous placez .cs fichiers dans App_Code et changé leur action de construire à compiler dans un Projet d'Application Web.
Soit de l'action de construire pour la .cs fichiers dans App_Code comme Contenu ou de modifier le nom de App_Code à autre chose. J'ai changé le nom depuis intellisense ne sera pas corrigé .cs fichiers marqués comme contenu.
Plus d'info à http://vishaljoshi.blogspot.se/2009/07/appcode-folder-doesnt-work-with-web.html
Je vous remercie beaucoup. Cela a été me rend fou
Ce fixe pour moi. Merci.
OriginalL'auteur Lilja
Retrait de la catégorie fichiers de la
App_Code
dossier, et de les placer directement dans le site web, a résolu le problème pour moi.J'ai mis la classe dans le dossier de modèles dans un ASP.NET MVC4 projet pour corriger cela.
OriginalL'auteur Naveen Q
Cela peut aussi arriver si vous avez des TagPrefix dans votre fichier ASPX.
Ce serait la cause de cette erreur...
Vous pouvez résoudre ce problème en changeant simplement le 2ème "uc1" à "uc2"
Fixe...
Je suis en désaccord, car il fixe le problème pour moi. Cela fait plus d'un an et ne me souviens pas de tout ce qui concerne cela, mais il serait intéressant de le laisser ici pour les autres à lire.
Cette réponse a résolu mon problème. C'était bizarre parce que l'erreur n'est pas toujours le cas, seulement après quelques déploiements. Comme Spyros, je ne crois pas que cela permettrait de résoudre le problème, je n'ai pas vu le lien. Merci Jason Geiger pour l'affichage de cette.
Pour ce que sa vaut. Les contrôles qui ont été à l'origine de ce étaient tous dans le même dossier, référencé à partir de plusieurs applications virtuelles comme un répertoire virtuel.
Gratter mon commentaire. L'erreur a juste montré sa tête laide de nouveau. De retour à la planche à dessin.
OriginalL'auteur Jason Geiger
"Solution propre", suivie par "la Reconstruction de la Solution" semble pour le fixer.
OriginalL'auteur Roman
Cela peut se produire lorsque le même nom de classe est spécifié dans plusieurs
.aspx.cs
fichiers, c'est à direlorsque les deux pages sont créées avec un nom de fichier différent, mais par erreur ont le même nom de classe.
Lors de la construction de la webapplication cela donne un avertissement, mais l'application s'exécute, cependant, après la publication de la demande ne fonctionne plus et lève l'exception comme mentionné dans le cas des OP question.
Veillant à ce que les deux noms de classe de ne pas se chevauchent résout le problème.
partial class
, qui est en fait une façon courante (la seule) pour diviser une classe sur plusieurs fichiers, auquel cas vous utiliser le même nom.Cela a fini par être proche de mon problème dans un Site Web (pas d'Application). Compensation de la température des dossiers, déplacer des choses hors de App_Code et d'autres suggestions n'ont pas de travail. Il n'était pas jusqu'à ce que j'ai regardé l' .cs fichier code-behind pour mon Master Page que j'ai remarqué le nom de fichier ne correspond pas au nom de la classe, ce qui était encore le défaut
MasterPage
. Une fois j'ai fait une classe renommer dans le menu du clic droit (pour toutes les références permettrait de mettre à jour), l'erreur a finalement disparu. Je ne peux que deviner que ma page maître était en conflit avec leSystem.Web.UI.MasterPage
classe.OriginalL'auteur Deepak
J'ai encore eu le problème après toutes ces suggestions. Un peu de classe à l'intérieur de App_Code a été compilée à deux DLL. Quelque chose comme ceci (simplifié):
J'ai juste renommé le "App_Code" dossier "Code". C'est un MVC5 projet, donc il ne devrait pas être un problème avec de servir .cs des fichiers à l'intérieur de la web racine du projet.
OriginalL'auteur tggm
Ce qui m'est arrivé à cause d'une erreur dans mon Web.Config
La
Sytem.Web.Helpers
a été souligné dans 1.0.0.0 au lieu de 3.0.0.0 (MVC 3 est utilisé sur ce projet).Parce qu'IIS n'arrivais pas à trouver la référence dans le dossier local il a regardé dans le GAC et a trouvé deux versions différentes. Après la pointant vers la bonne référence IIS trouvé le local dll et utilisées qu'au lieu de chercher le GAC.
OriginalL'auteur mlapaglia
J'ai trouvé une autre raison: les différentes versions utilisées pour les icônes de la boîte à outils et références dans le projet. Après l'insertion d'objets dans une certaine forme, l'erreur a commencé.
OriginalL'auteur Rogério Silva
Référence : https://support.microsoft.com/en-in/help/2028526/building-an-asp-net-project-in-visual-studio-results-in-compiler-error
Lors de la construction d'un ASP.NET projet à l'aide de Visual Studio, vous pouvez au hasard voir un message d'erreur semblable au suivant:
Compilateur Message d'Erreur: CS0433: Le type 'ASP.summary_common_controls_notes_ascx' existe dans les deux 'c:\Windows\Microsoft.NET\Framework64\v2.0.50727\Temporary ASP.NET Files\Book_Details\abc12345\def8910\App_Web_msftx123.dll" et "c:\Windows\Microsoft.NET\Framework64\v2.0.50727\Temporary ASP.NET Files\Book_Details\abc12345\def8910\App_Web_msfty456.dll'
Description: Une erreur s'est produite lors de la compilation d'une ressource nécessaire pour répondre à cette demande. Veuillez examiner les détails des erreurs spécifiques et modifier votre code source de manière appropriée.
Fichier Source: d:\http\post\publisher\default.aspx Ligne: 102
Scénarios courants où cette erreur peut se produire sont discutés ci-dessous
Scénario 1
Description: Une cause commune, c'est quand il y a deux assemblées dans la même application web bin contenant deux définitions de classe mais qui ont le même nom de classe. Cela peut se produire si plus d'un Défaut.aspx été compilées en une seule assemblée. Souvent, cela se produit lorsque la page principale (valeur par Défaut.le maître) et la page ASPX par Défaut (valeur par Défaut.aspx) déclarer un _Default classe.
Solution: Modifiez le nom de la classe de la page principale (à partir de _Default dans la plupart des cas) et de reconstruire le projet. Il est important de résoudre tout conflit de noms entre les classes.
Scénario 2
Description: La Référence des Chemins dans Visual Studio est utilisé pour spécifier le chemin d'accès au dossier pour l'assemblage des références utilisées par le projet. Il est possible que le chemin d'accès contient un assembly qui contient le même nom de classe. Il est peut-être qu'il y a de multiples Références ajoutées à la même assemblée (éventuellement différentes version ou le nom) provoquant un conflit de noms.
Solution: Supprimer l'ancienne version de référence. Pour ce faire, dans Visual Studio avec le bouton droit de la souris sur votre site web et de vérifier les "Références" dans les propriétés.
Scénario 3
Description: Par défaut, lorsqu'un ASP.NET l'application Web est compilé le code compilé est placé dans le Temporaire ASP.NET dossier de Fichiers. Par défaut, les autorisations d'accès sont donnés à l'ASP.NET compte d'utilisateur local, qui a la haute-approbation des autorisations nécessaires pour accéder à du code compilé. Il est possible que certains changements ont été apportés dans les autorisations par défaut causant la gestion des versions des conflits. Une autre possibilité serait que le logiciel anti-virus pourrait être le verrouillage d'un assemblage par inadvertance.
Solution: Désactivez le Temporaire ASP.NET Dossier de Fichiers de tous les contenus.
Scénario 4
Description: Lorsque le lot attribut dans le web.la config est définie sur True, il élimine le retard causé par la compilation nécessaire lorsque vous accédez à un fichier pour la première fois. ASP.NET précompilation de l'onu, les fichiers compilés dans un mode batch, ce qui retarde la première fois que les fichiers sont compilés. La désactivation de la compilation par lot peut exposer masqué des erreurs de compilation qui peuvent exister dans l'application, mais ne sont pas signalés. Cependant le plus important pour cette question, il dit ASP.NET pour compiler dynamiquement individu .aspx/.ascx fichiers dans des assemblées distinctes au lieu d'une seule assemblée.
Solution: Définissez lot=false dans la section web.config. Cela devrait être considéré comme une solution temporaire en tant que paramètre de lot=false dans la compilation de la section a un impact significatif sur les performances sur le temps de compilation de l'application dans Visual Studio.
Scénario 5
Description: la Modification du web.fichier de configuration pour un ASP.NET l'application ou la modification d'un fichier dans le dossier bin (telles que l'ajout, la suppression ou le changement de nom) provoque le domaine d'application de redémarrer. Lorsque cela se produit tout état de session est perdue et la mise en cache des éléments sont supprimés de la mémoire cache, comme le site web redémarre. Il est possible que le problème est provoqué par un état incohérent dans l'application web.
Solution: le Déclenchement d'un domaine d'application à redémarrer par le toucher (le montage) sur le web.fichier de configuration.
Scénario 6
Description: Vous pouvez stocker le code source dans le dossier App_Code, et il sera automatiquement compilé au moment de l'exécution. L'assemblage qui en résulte est accessible à tout autre code dans l'application Web. Le dossier App_Code fonctionne donc un peu comme le dossier Bin, sauf que vous pouvez stocker le code source dans ce lieu de code compilé. La classe sera recompilé quand il ya un changement dans le fichier source. Si il y a des conflits en raison de la vétusté de l'assemblée alors forcement une recompilation peut résoudre le problème.
Solution: appuyez sur un fichier dans la Corbeille ou App_Code dossiers pour déclencher une recompilation complète.
OriginalL'auteur Sandeep Kumar
J'ai fini par changer la façon dont les MasterType est référencé dans la page de marque.
J'ai changé:
<%@ MasterType VirtualPath="~/x/y/MyMaster.Master" %>
pour
<%@ MasterType TypeName="FullyQualifiedNamespace.MyMaster" %>
Voir ici pour plus de détails.
Espère que cela aide quelqu'un à sortir.
OriginalL'auteur Chris
Pour moi au moins, ce qui s'est passé quand j'ai enlevé une référence à une assemblée et d'y ajouter une référence à une version plus récente d'elle, qui avait un nom différent. Dans ce cas, il semble que l'ancienne assemblée est resté dans la bin et obj dossier, et n'a pas été supprimé avec la solution propre fonctionnement à partir de Visual Studio (peut-être parce qu'il ne fait pas partie du projet plus). Dans ce cas, il suffisait de supprimer le contenu de la bin et obj dossiers du projet où il erreur se produit, à partir de l'Explorateur Windows (ou un outil de gestion de fichiers). Puis, à partir de Visual Studio, propre à la solution et à reconstruire.
OriginalL'auteur Guillermo Gutiérrez
Dans notre cas, la raison de la différence dans les .versions de dll de sites dans IIS. Ils sont placés sous l'autre dans IIS, vous permettant d'accéder à l'autre à travers un sous-domaine. Il hérite de la première web.config, et de la combiner avec the next web.config, il n'a pas, d'avoir des versions différentes de mvc.dll.
OriginalL'auteur Christian Haaland
J'ai eu le même problème.
C'est ma solution :
Mettre isolé classes qui nécessitent de la propriété
[Build Action]
définir comme[Compile]
vers un dossier autre queApp_Code
commeApplication_Code
depuis leApp_Code
dossier sera compilé en tant que distincte de l'assemblée, ayant la même Classe compilée dans les 2 assemblées.OriginalL'auteur ali mahmoodi
J'ai eu le même problème avec deux ascx contrôles ayant le même nom de classe:
Je le fixe, il suffit de renommer le nom de la classe:
OriginalL'auteur kunalbabre
Proche de la Solution et de l'ouvrir à nouveau, puis vérifiez les références de projets pour de doubler:
Cela peut se produire si vous avez été à l'aide de NuGet et changé la Dll endroit de référence. Pour corriger cela, vous devez modifier manuellement le proj fichier en supprimant les entrées, par exemple:
Montre que ces "<Import" références peuvent apparaître à différents endroits dans le proj fichier.
OriginalL'auteur Jeremy Thompson
Un super rapide et pratique fix est de l'abus de Visual Studio est incroyable intellisense temporairement par le référencement de la classe quelque part.
Exemple:
Lors de la construction ou de passer le curseur sur la ligne, vous pouvez afficher l'erreur suivante:
C'est vous dire la deux sources à l'origine du conflit immédiatement.
System.Core.dll
est la .dll fichier que vous souhaitez conserver, afin de supprimer l'autre.J'ai trouvé le mien assis dans le
bin
répertoire, mais il est peut-être ailleurs dans le projet.Comme une question de fait, c'est important de garder à l'esprit, parce que depuis le
bin
répertoire peut ne pas être inclus en tant que partie de la TSF changement, il peut expliquer pourquoi la vérification de vos modifications ne résout pas le problème pour les autres membres de votre équipe.OriginalL'auteur Knickerless-Noggins
Je suis de la conversion d'un vieux asp.net (v 1 ou 2) site web pour s'exécuter sous .net 4.5 comme une application web.
Ma solution a été de déplacer le contrôle de l'utilisateur du gestionnaire d'événement délégués qui ont été à l'origine du problème à un fichier physique:
OriginalL'auteur marcel_g
Il y a plusieurs raisons à cela. Et la plupart de ceux mentionnés ci-dessus s'appliquent à différents scénarios. Ce que j'ai noté, c'est que l'erreur se produit UNIQUEMENT lorsque l'authentification est définie à quelque chose d'autre que "None". Pour mes tests, je vais régler cela et ça fonctionne.
OriginalL'auteur Chagbert
aller à
web.config
dans le
<compilation
ajouterbatch="false"
il devrait résoudre le problème
OriginalL'auteur Adeel
Oui,Avait même problème et l'a résolu en changeant l'hérite de code c# et page tag aspx
OriginalL'auteur Dhaval Panchal