Espace de noms non reconnu (même s’il existe)

Je reçois cette erreur:

Le type ou le nom de l’espace de noms ‘AutoMapper’ est introuvable (manque-t-il une directive using ou une référence d’assembly?)

Ce qui est amusant, c’est que j’ai déjà cette référence dans mon projet:

ProjectThatFails

Et ceci est mon code:

using System.Collections.Generic; using DataContract; using SelectorDAL; using AutoMapper; namespace SpecimenSelect { public class SpecimenSelect : ISpecimenSelect { public SpecimenSelect() { SetupMaps(); } private static void SetupMaps() { Mapper.CreateMap(); } 

L’autre chose étrange est que j’ai deux autres projets dans ma solution qui utilisent tous deux AutoMapper et font référence au même fichier AutoMapper.dll. Ils travaillent tous les deux parfaitement bien.

Voici une capture d’écran d’un:

ProjectThatWorks

et voici ce code (qui comstack bien):

 using System.Collections.Generic; using AutoMapper; using DataContract; using SelectorDAL; namespace PatientSelect { public class PatientSelect : IPatientSelect { public PatientSelect() { SetupMaps(); } private void SetupMaps() { Mapper.CreateMap(); Mapper.CreateMap(); Mapper.CreateMap(); } 

Les deux références semblent avoir les mêmes données sur la page de propriétés.

Qu’est-ce que je rate?

J’ai essayé:

  1. Redémarrer Visual Studio
  2. Référencement sans instruction using (c.-à-d. AutoMapper.Mapper.CreateMap )
  3. Nettoyer et reconstruire

D’autres idées?

Assurez-vous que votre projet n’est pas configuré pour utiliser le profil client .NET Framework 4.

Vous pouvez vérifier / modifier cela en cliquant avec le bouton droit sur votre projet (pas la solution), sélectionnez Propriétés -> Application -> Cadre cible . Le framework cible est un menu déroulant sur cette page.

Ceci est un problème dans Visual Studio (j’irais même jusqu’à l’appeler un bug). AutoMapper nécessite des assemblys exclus du profil client .NET Framework 4. Puisque votre projet utilise cette version du framework, il se brise.

Une erreur similaire se propagera au processus de génération lorsque la version du .NET Framework pour le projet que vous référencez est supérieure à celle du projet faisant la référence. Par exemple, un projet ciblant 4,5 qui fait référence à un projet ciblant 4.5.1 vous donnera la même erreur.

Il doit y avoir un meilleur message d’erreur lorsque cela se produit car il n’y a pas d’explication rationnelle à la raison pour laquelle il ne serait pas généré car le message d’erreur vous indique de référencer un assembly que vous avez clairement référencé.

Question stupide: pourrait-il y avoir deux automapper.dll? Un avec un espace de noms AutoMapper et un sans? Confirmez les chemins dans les deux projets.

Été là…

J’ai également remarqué que l’ordre d’utilisation est différent. Ça ne devrait pas avoir d’importance, mais as-tu essayé de les mélanger?

Si votre classe ne comstack pas, même si elle se trouve dans le projet, vérifiez-les:

  1. si le nom de la classe est exactement le même
  2. si l’espace de nom est exactement le même
  3. si les propriétés de classe montrent l’action de compilation = comstackr

J’ai un problème similaire avec les références qui ne sont pas reconnues dans VS2010 et les réponses ici n’ont pas pu corriger le problème.

Le problème dans ma solution était lié à l’extension du chemin où se trouvait le projet référencé. Comme je travaille avec SVN, j’ai créé une twig d’un repository pour effectuer des tests et cette twig a augmenté de deux niveaux dans la structure du chemin, de sorte que le chemin est devenu trop long pour être utilisable dans Windows. Cela n’a généré aucune erreur mais n’a pas reconnu l’espace de noms de la référence du projet. Lorsque je corrige l’emplacement du projet pour avoir un chemin plus petit, tout s’est bien passé.

Dans mon cas, la dll référencée a été créée dans une version supérieure de .Net Framework. Après avoir ajouté la référence, je pouvais l’utiliser. Mais dès que j’ai fait une compilation, l’erreur “référence manquante” apparaîtra. Je rafraîchit la dll l’erreur ira mais elle ne se construirait jamais. Cet article m’a fait vérifier la version du framework et j’ai donc pu le résoudre en construisant le projet référencé dans la même version.

La table de types du projet est peut-être dans un état incorrect. J’essaierais de supprimer / append la référence et si cela ne fonctionnait pas, créez un autre projet, importez mon code et voyez si cela fonctionne.

J’ai rencontré ce problème en utilisant VS 2005, on pourrait s’attendre à ce que MS ait résolu ce problème particulier maintenant.

La question a déjà été atsortingbuée, mais des détails supplémentaires non encore décrits doivent être vérifiés.

J’avais également ce comportement, où le projet B était référencé dans le projet A, mais l’espace de noms du projet B n’était pas reconnu dans le projet A. Après quelques recherches, j’ai trouvé mon chemin trop long. En réduisant le cheminement des projets (A et B), les références sont devenues visibles et disponibles.

J’ai testé cette théorie en créant le projet C à une profondeur de chemin beaucoup moins grande. J’ai référencé le projet C dans le projet A. Les références ont fonctionné correctement comme prévu. J’ai ensuite retiré le projet C de la solution, j’ai simplement déplacé le projet C vers un chemin profond, le même que le projet B, et ajouté le projet C à la solution, et j’ai essayé de comstackr. Je n’avais alors aucune visibilité pour projeter des objects C plus longtemps.

Dans mon cas, j’avais copié une bibliothèque de classes, et je n’ai pas changé le “Nom de l’assembly” dans les propriétés du projet, donc une DLL remplaçait l’autre …

J’ai résolu ce problème en cliquant avec le bouton droit sur le dossier contenant les fichiers et en choisissant Exclure du projet , puis en cliquant de nouveau avec le bouton droit de la souris et en sélectionnant Inclure dans le projet.

J’ai été confronté à un problème similaire d’espace de noms / méthode qui n’était pas trouvé lors de l’exécution, bien que cela se soit bien passé lors de la compilation. La raison en est que l’assemblage que j’ai référencé a été déployé sur GAC. dans Visual Studion, il utilisait la plus récente, mais pendant l’exécution, la version de GAC avait été utilisée.

Dans mon cas, j’ai reçu l’erreur uniquement dans VS 2015. Lors de l’ouverture du projet dans VS 2017, l’erreur avait disparu.

Cela doit être la solution la plus simple si toutes les autres réponses ne vous aident pas

Je cherchais ce qui n’allait pas dans ma configuration parmi les réponses. Je les ai toutes essayées – aucune n’a fonctionné, puis j’ai réalisé que Visual Studio 2018 avait été développé par Microsoft . Donc j’ai fait ce que la plupart des gens font,

Redémarrage de Visual Studio Et ça a fonctionné