web-dev-qa-db-fra.com

Erreur: le type existe dans les deux répertoires

Dans un projet MVC2, j'ai déplacé un fichier de App_code vers le dossier Content et je l'ai compilé. Puis déplacez-le à nouveau vers App_Code puis changez son action de construction en "Compiler". Maintenant, je reçois cette erreur et je ne sais pas comment résoudre ce problème pour que mon programme fonctionne à nouveau:

CS0433: Le type 'Helper' existe dans tous les deux 'c:\Utilisateurs ...\AppData\Local\Temp\Temporary ASP.NET Fichiers\root\b00d4b7d\b2553f9c\App_Code.zowyklar.dll ' et 'c:\Utilisateurs ...\AppData\Local\Temp\Temporary ASP.NET Fichiers\root\b00d4b7d\b2553f9c\Assembly\dl3\5c6d3537\19f85663_cde9cb01\MyProject.DLL '

Le nettoyage et la reconstruction ne résolvent pas le problème.

41
user310291

Essayez de nettoyer votre solution, puis essayez de la reconstruire. Visual Studio a probablement toujours une référence à l'ancienne DLL après avoir créé la nouvelle DLL.

6
atbebtg

Cela a été répondu dans une question distincte et résolu le problème pour moi. Assurez-vous de voter la réponse de la personne d'origine.

Erreur ASP.Net: "Le type 'foo' existe à la fois dans" temp1.dll "et" temp2.dll "

Ajoutez l'attribut batch = "false" à l'élément "compilation" du fichier web.config.

Ce problème se produit en raison de la manière dont ASP.NET 2.0 utilise les références d'application et la structure de dossiers de l'application pour compiler l'application. Si la propriété batch de l'élément dans le fichier web.config de l'application est définie sur true, ASP.NET 2.0 compile chaque dossier de l'application dans un assembly séparé.

http://www.sellsbrothers.com/news/showTopic.aspx?ixTopic=1995

http://support.Microsoft.com/kb/919284

34
nullnvoid

En supposant que vous construisez une application Web et que le point MVC2 vous soit attribué, vous ne devez pas utiliser le dossier App_Code. Il n'a pas été conçu pour être intégré aux projets d'application Web.

Lorsque vous compilez dans Visual Studio, tout le code de votre application (y compris dans App_Code ) est compilé dans un assembly. Quand vous courez votre application, asp.net connaît un dossier "spécial" appelé App_Code et compile le contenu de celui-ci dans une assemblée avec un unique prénom. Ainsi, chaque fois que vous exécutez le projet, vous rencontrez ce problème.

La solution:

Renommez votre dossier App_Code en quelque chose comme "Code" ou "Global" (et mettez à jour vos références maintenant cassées) & voila, le problème est résolu.

20
pimbrouwers

Simple Solution a fonctionné à 100% pour moi

Placez la classe en dehors du dossier App_Code

http://vishaljoshi.blogspot.fr//07/appcode-folder-doesnt-work-with-web.html

9
Arun Prasad E S

Mon problème était avec une version différente de DevExpress. 
La suppression de tout le contenu des dossiers bin et obj a fait redémarrer mon site Web ...

Référence: https://www.devexpress.com/Support/Center/Question/Details/KA18674

9
Stavros

J'ai eu la même erreur: Le type 'MyCustomDerivedFactory' existe dans les deux et Mes classes dérivées ServiceHost et ServiceHostFactory se trouvaient dans le dossier App_Code de mon projet de service WCF. Ajouter

<configuration>
  <system.web>
    <compilation batch="false" />
  </system.web>
<configuration>

n'a pas résolu l'erreur, mais le déplacement de mes classes dérivées ServiceHost et ServiceHostFactory dans un projet de bibliothèque de classes distinct l'a fait.

6
groch

ESSAYE CELUI-LÀ!

Normalement, lorsque cela se produit localement, je nettoie tout le dossier aspnet temp. Mais récemment, cela a été le cas lorsque j'ai publié mon site Web dans Azure. Donc, "dossier aspnet propre temp" n'était pas une solution. 

Après avoir cherché sur Internet, j'ai fondé ceci:

Supprimez les fichiers ASP.NET Temp du site Web Azure

Ça marche pour moi! 

5
Charles

Si vous migrez le site Web ASP.NET 2.0 vers .NET Web APP 4.5, vous pouvez également rencontrer ce problème. Et mettre batch = false, ajouter un espace de noms, etc ... ne peut pas fonctionner. 

La solution consiste à renommer l'ancien dossier App_Code (ou tout autre dossier problématique) en Old_App_Code (comme le fait le processus automatique) ou tout autre nom.

1
Clovis Portron

J'ai eu le même problème dans l'un de mes projets. Il s'avère que le problème a commencé lorsque je suis en train de faire face à un gabarit.

Le problème se produira également si deux pages "héritent" de la même page.

J'avais la ligne de code suivante en haut de mon "LoginMaster.Master" & "MasterPage.Master"

<%@ Master Language="C#" AutoEventWireup="true" CodeFile="MainMaster.master.cs" Inherits="Master_Pages_Header" %>

J'ai changé les hérites sur mon "LoginMaster.Master en: 

<%@ Master Language="C#" AutoEventWireup="true" CodeFile="LoginMaster.master.cs" Inherits="Master_Pages_LoginMaster" %>

J'ai immédiatement pu publier mon projet sans aucun problème. Espérons que cela fonctionne pour quelqu'un d'autre. Je m'excuse de ne pas utiliser les termes corrects.

Vous devrez également modifier la classe dans le fichier .cs pour qu'elle corresponde au nom Inherits. Si vous ne le faites pas, cela provoquera une erreur.

C'EST À DIRE: 

public partial class Master_Pages_LoginMaster : System.Web.UI.MasterPage
1
Tidy

Il peut y avoir deux classes portant le même nom "Helper" dans votre solution/projet. Changer le nom de l'un d'entre eux et ensuite reconstruire

1
Adnan Ashraf

Dans l'application Web (et non sur le site Web), je remplace l'action de construction App_Code * .cs (propriétés du fichier) de Compile en Content . alors le problème à résoudre.

0
Jack

Dans mon cas, je dois utiliser des articles avec le même nom mais des extensions différentes dans mon projet. L'un était accountRep.aspx et l'autre accountRep.rpt créé par Crystal Report. Problème résolu lorsque j'ai changé accountRep.rpt en accountReport.rpt

0
Mohammad Zendedel

Le dossier App_Code n'est pas destiné à être utilisé avec les projets MVC (WAP).

Les fichiers du dossier App_Code sont automatiquement compilés dans le cadre d’une DLL spéciale. Si la propriété Build Action sur le fichier est définie sur Compile, la même classe sera également compilée dans le cadre de la dll principale et vous obtiendrez deux copies.

Définir la propriété Build Action sur None permet de s'assurer qu'il n'y a qu'une seule copie de la classe dans le projet. Le compilateur ne détectera aucune erreur dans le dossier App_Code lors de la construction, mais Intellisense validera toujours le code, mais les erreurs de compilation ne s'afficheront pas tant qu'il ne sera pas compilé à la volée.

La solution recommandée consiste à placer le code dans un dossier normal et à vous assurer que l'action de génération est définie sur Compiler.

0
JonC

Dans mon cas, j'ai eu cette erreur lorsque j'avais nommé par erreur une classe de la même manière que la classe dont elle héritait.

0
Bryan Finlayson

J'ai corrigé cela en vérifiant Delete all existing files prior to publish dans Visual Studio:

 enter image description here

0
sojim2

Une autre solution potentielle qui a fonctionné pour moi a été de changer toutes les références de

CodeFile="~/..."

à

CodeBehind="~/..."

dans toutes les pages .master et .aspx

Cela s'est produit lors de la conversion d'un ancien site Web en une application Web appropriée avec un fichier de solution.

Je n'ai trouvé cette information nulle part ailleurs, alors espérons que cela aidera quelqu'un.

0
Simon Hawes