web-dev-qa-db-fra.com

Comment corriger l'erreur "namespace x contient déjà une définition de x"? Est arrivé après la conversion en VS2010

Plus précisément, l'erreur se produit dans le Resources.Designer.cs:

Erreur 2 L'espace de noms 'ModulusFE' contient déjà une définition pour 'StockChartX' Resources.Designer.cs 11 21 ModulusFE.StockChartX

J'ai googlé cela et je suis encore assez confus. Est-ce que quelqu'un sait quelque chose que je pourrais essayer?

J'ai essayé de reconstruire et de nettoyer, ainsi que de renommer le Resources.Designer.cs file dans l’espoir de la reconstruire, mais pas de chance.

Le haut du code dit ceci:

// <auto-generated>
//     This code was generated by a tool.
//     Runtime Version:4.0.30319.225
//
//     Changes to this file may cause incorrect behavior and will be lost if
//     the code is regenerated.
// </auto-generated>

Toutes les idées que ce soit seraient appréciées.

50
stormist

Cela m’est arrivé il ya environ un an et je ne me souviens pas exactement de la cause première du problème, mais vous pouvez essayer deux choses:

  1. S'il s'agit d'un fichier généré automatiquement (comme le nom de "Resources.Designer.cs"), essayez de le supprimer et de laisser le VS le régénérer.
  2. Séparément ou conjointement avec # 1, sélectionnez Show All Files dans l'Explorateur de solutions ou ouvrez le dossier de solutions dans l'Explorateur Windows - il est possible qu'une version du fichier ait été exclue du projet et qu'elle est par conséquent "invisible" pour le VS, mais le met néanmoins en colère ...
44
johnny

J'ai eu ce problème aussi, et c'est parce que j'ai créé un nouvel espace de noms, mais l'espace de noms parent contenait une classe du même nom.

26
Warren Rumak

C'est une vieille question, mais je n'ai pas trouvé le correctif que j'ai utilisé, je l'ai donc ajoutée ici.

Dans mon cas, il s'agissait d'un espace de noms portant le même nom qu'une classe de l'espace de noms parent.

Pour le trouver, j'ai utilisé le navigateur d'objets et recherché le nom de l'élément déjà défini.

S'il ne vous permet pas de le faire tant que l'erreur persiste, modifiez temporairement le nom de l'élément pour lequel vous vous plaignez, puis recherchez l'élément incriminé.

15
Anglefroghammer

Cela ressemble à un bogue dans OmniSharp du code VS.

La solution pour moi était d'exécuter la commande "Redémarrer OmniSharp".

Il suffit de faire: - ctr shift P - tapez "Redémarrer OmniSharp" .. appuyez sur Entrée

Cela a résolu le problème pour moi.

12
Carlos R Balebona

Malheureusement, aucune des autres réponses n'a aidé. Mon problème est spécifiquement survenu dans un projet WPF.

Le problème est survenu lorsque j'ai créé un dossier sous le dossier MainWindow, ce qui a créé un espace de noms similaire à ProjectName.MainWindow.Folder. Maintenant, je pense qu'en raison de certains codes de concepteurs statiques, Visual studio crée une confusion entre la classe MainWindow et l'espace de noms Project.MainWindow.Folder. En guise de solution, j'ai déplacé le Folder de MainWindow. L'examen de la vue des classes ou de la solution/projet aide à reconnaître les espaces de noms et les classes qui les composent.

5
joe_maya

J'ai eu ce même problème et c'était en raison de nommer une fonction dans le code derrière le même que mon outil. Une simple erreur, mais il ne faut pas oublier non plus.

3
Neil

Cela m'est juste arrivé. Ce qui s’est passé est que j’ai dupliqué un projet qui était à l’origine sous contrôle de source. Bien que j'ai tout renommé correctement, les autorisations de fichier sur tous les fichiers étaient toujours définies en lecture seule. Lorsque j'ai commencé à modifier certains contrôles de formulaire, Visual Studio a automatiquement créé un fichier Resource1 car le fichier de ressources d'origine était en lecture seule.

Ce que j'ai fait pour résoudre ce problème était le suivant:

  1. autoriser les autorisations d'écriture sur les fichiers du projet.
  2. supprimé le fichier de ressources d'origine
  3. Ctrl-A pour tous les éléments de formulaire, puis Ctrl-X pour les couper.
  4. Enregistrez le formulaire.
  5. Ctrl-V pour tous les coller.
  6. Enregistrez le formulaire.

Je devais le faire car le code généré automatiquement ne se mettait pas à jour par lui-même, je l'ai donc forcé à le mettre à jour en apportant une modification au formulaire. Ne pas le faire a laissé un tas de code à partir d'éléments de formulaire qui n'existaient plus avant de modifier les autorisations de fichier.

3
gonzobrains

J'ai eu un problème similaire, mais j'ai trouvé une solution différente de celle que j'ai lue. Je suis arrivé à mon point après avoir lu la réponse de P Walker.

Mon problème est survenu lorsque j'ai mal nommé mon fichier de ressources pour la langue japonaise. Longue histoire, j'essayais de créer une ressource pour le japonais, mais je l'ai accidentellement nommée localized.jp.resx. Je me suis alors rendu compte que le code de langue iso est ja pas jp pour le japonais. Une fois que j'ai changé le nom du fichier en localized.ja.resx et supprimé tout ce qui se trouvait dans le fichier du concepteur, cela a résolu mon problème.

C'est ce qui a résolu mon problème, espérons-le, cela aidera quelqu'un d'autre.

3
werdsackjon

J'ai eu un problème similaire et je l'ai résolu en supprimant toutes les copies/sauvegardes du fichier .cs du répertoire.

3
RSSM

J'ai eu un fichier xaml avec la définition suivante

<Window x:Class="mm2.Views"
   .etc..
/>

mm2.Views était le nom d'un espace de noms dans mon application.

Pour résoudre ce problème, j'ai correctement renommé l'objet xaml:

<Window x:Class="mm2.Views.RecordedTracks"
   .etc..
/>
3
DefenestrationDay

Si vous utilisez différents fichiers aspx.cs définissant les classes du même nom, vous pouvez utiliser

<compilation targetFramework="4.5" />

en dessous de <system.web> dans votre fichier web.config.

Bien que je vous conseille toujours fortement de changer le nom de la classe.

2
frezq

J'ai eu un problème similaire (projet universel, Visual Studio 2015), je l'ai résolu avec les modifications suivantes:

Dans App.xml.cs, c'était (c'était ok):

namespace Test.Main {

Mauvais, ancienne version de App.xml:

x:Class="Test.Main"

Bonne nouvelle version de App.xml:

x:Class="Test.Main.App"
2
Miki

Je suis tombé sur un problème similaire. Après avoir généré ma base de données à partir d'un fichier edmx, j'ai cliqué sur 'Enregistrer tout' et 'Construire' et toutes les classes de types/modèles que j'ai créées sont apparues dans la zone d'erreur. J'ai cherché pourquoi cela s'était passé et, comme vos réponses le suggèrent, j'ai pensé que c'était quelque chose qui était généré automatiquement.

Toutefois, des solutions telles que la suppression et la régénération des classes générées automatiquement ne fonctionnaient pas pour moi.

J'ai fini par perdre patience et j'ai décidé de régler le problème autrement. Depuis que mon script a été enregistré, je viens de supprimer le fichier edmx (et sa référence dans le fichier web.config), puis de revenir en créer un autre en utilisant "model from database" et de ne plus y toucher.

Inutile de dire que j'étais assez en colère que ça se soit passé comme ça.

2
Kody Crossman

J'ai eu quelque chose de semblable à ce qui se produit dans mon application WPF. Cela s'est produit lorsque j'essayais de faire un nettoyage en déclarant un espace de noms plus descriptif. Le problème est dû au fait que j'avais nommé l'espace de noms dans le code-behind (ou cs) de la même manière que la classe Window. L'espace de noms dans le code-behind devrait avoir la dernière section dépouillée (après le point le plus à droite) et utilisée pour déclarer la classe et l'instancier. Avis Win ci-dessous:

xaml

<Window x:Class="FrameApp.UI.Invoice.Win" ...>

code-behind

namespace FrameApp.UI.Invoice
{
    public partial class Win : Window
    {
        public Win()
    }
}

Un oubli évident, mais cela m'a pris au moins une heure avec toutes les erreurs qui sont apparues.

2
Chad Kuehn

J'avais ce problème, mais le mien était légèrement différent des problèmes mentionnés ici. Je nettoyais mon projet et déplaçais certaines classes dans de nouveaux dossiers. J'avais une classe 'AddFilter' que j'ai déplacée dans un dossier 'AddFilter' - je me suis donc retrouvée avec une classe qui partageait le nom d'un espace de noms. C'était un peu difficile à repérer au début parce que je ne pouvais trouver aucune autre classe avec laquelle elle était en conflit; à la place, il était en conflit avec l'espace de noms.

2
David Edwards

Je pense que cette question est parce que vous avez ajouté pour une seule table, 2 classes DAL. Si cette table est incluse dans une relation, supprimez-lui le nom_table.dbml et conservez-le pour les tables associées. Vous devez utiliser l'un d'eux.

2
Galilo Galilo

J'avais le même problème tout à l'heure et j'ai trouvé qu'il s'agissait d'un des oublis les plus simples. Je construisais des classes, copiant et collant du code d'un fichier de classe aux autres. Lorsque j'ai changé le nom de la classe dans, disons Class2, par exemple, une liste déroulante s'affichait à côté du nom de la classe, demandant si je souhaitais changer toutes les références à Class2. nom à Class2.

Comme je l’ai dit, c’est un oubli très simple qui m'a fait me gratter la tête pendant un moment, mais vérifiez bien vos autres fichiers, en particulier le fichier source que vous avez copié pour vous assurer que VS ne vous a pas changé le nom, derrière le scènes.

2
Kyle

C'est peut-être un peu un cas Edge, mais nous le rencontrons parfois dans notre environnement de développement. Nous avons dû configurer une culture personnalisée dans Windows pour prendre en charge en-HK. Windows 8.1 prend désormais en charge cette culture de manière native, tout comme Windows 2012 R2, mais les machines plus anciennes doivent avoir cette culture créée. Toute machine ne disposant pas de cette configuration de culture recevra cette erreur signalée. La solution consiste à créer la culture sur la machine (une application console a été créée à cet effet) et tout recommence à fonctionner.

2
P Walker

Ce n'est pas la meilleure solution, mais si vous vous en fichez, c'est une solution facile. J'ai simplement renommé ma classe. J'avais donc une carte de cours et je l'ai changée en MyCard.

2
mosborn1987

Moi aussi j'ai eu cette erreur, lorsque je modifie le cadre cible de mon projet WPF en Framework Version 4.0 Profil client -> Framework 4.0. C'est résolu par lui-même.

2
Nalan Madheswaran

J'ai résolu le problème en supprimant tous les enums du navigateur de modèle, puis en les rajoutant. D'une manière miraculeuse, l'outil a tout régénéré à la perfection et le message d'erreur a disparu (j'utilise VS2012, FYI).

2
CokoBWare

Je suis tombé sur ce problème de classe partiel sous la forme d’une solution gagnante après la conversion de .net 4.5.1 à 4.7.2.

Initialement le problème le compilateur ne se plaignait pas de la classe partielle mais de l'utilisation de properties.default ... sans qualification. Après avoir ajouté Global :: solnNameSpace. qualificatifs, alors j'ai eu le problème de classe partielle.

après avoir consulté les réponses dans ce fil de discussion, je regarde le fichier du concepteur de ressources, il s’est avéré généré avec solnNameSpace explicite, contrairement aux classes de la solution. De plus, solnNameSpace est identique au nom du nom de la classe problématique.

Pour résoudre le problème avec un minimum d'effort et de temps, j'ai sauvegardé le qualificatif Global ... et supprimé les instructions d'espace de nom explicite ... et de fin du fichier du concepteur de ressources. Je sais que je pourrais avoir des ennuis plus tard si des modifications entraînaient la génération automatique du fichier du concepteur de ressources, mais mon échéancier était serré. J'ai créé une documentation sur le changement de température au lieu d'une meilleure solution à long terme, car la solution n'est pas permise, compte tenu de la nature de la solution et de l'utilisation de plusieurs projets.

1
gg89

J'ai eu ce problème. C'était à cause de moi renommer un dossier dans le répertoire App_Code et le relâcher dans mon dossier de site IIS. Le dossier nommé d'origine était toujours présent dans mon répertoire cible - donc dupliqué - (je ne supprime pas complètement la cible avant la copie). Quoi qu'il en soit, la suppression de l'ancien dossier a résolu ce problème.

1
john blair

C'est ce qui m'est arrivé. J'ai remarqué qu'il y avait en fait une autre classe portant le même nom sous le même espace de noms "OtpService.Models.Request". Je n'ai donc modifié que l'espace de noms de la 2e classe en "OtpService.Models.Request .ExtraObj ". J'ai fait cela parce que je ne voulais pas changer le nom de la classe en conflit en autre chose.

1
DAVID OLASUPO