168 votes

Espace de noms non reconnu (même s'il y est)

J'obtiens cette erreur:

Le type ou le nom d'espace de noms 'AutoMapper' n'a pas pu être trouvée (vous manque une directive using ou une référence d'assembly?)

Le plus drôle, c'est que j'ai dans mon projet déjà:

ProjectThatFails

Et voici 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<SpecimenDetail, SpecimenDetailContract>();
        }

Autre chose étrange est que j'ai deux autres projets dans ma solution à la fois l'utilisation AutoMapper et de référencement sont exactement les mêmes AutoMapper.dll fichier. Ils travaillent tous les deux parfaitement bien.

Voici une capture d'écran:

ProjectThatWorks

et ici, c'est que le code (qui compile très 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<Patient, PatientContract>();
            Mapper.CreateMap<OrderedTest, OrderedTestsContract>();
            Mapper.CreateMap<Gender, GenderContract>();
        }

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

Ce qui me manque?

J'ai essayé:

  1. Redémarrer Visual Studio
  2. Référencement sans l'aide d'instruction (ie AutoMapper.Mapper.CreateMap)
  3. Nettoyer et Reconstruire

D'autres idées?

279voto

Andrew Hare Points 159332

Assurez-vous que votre projet n'est pas configuré pour utiliser le .NET Framework 4 Client Profile.

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

C'est un problème dans Visual Studio (j'irais même jusqu'à appeler ça un bug). AutoMapper nécessite des assemblages qui sont exclus de l' .NET Framework 4 Client Profile. Car votre projet est d'utiliser cette version du framework, il se casse.

Il doit y avoir un meilleur message d'erreur lorsque cela se produit parce que il n'y a pas d'explication rationnelle pour expliquer pourquoi il ne serait pas construire tant que le message d'erreur vous dit de faire référence à un assembly vous avez clairement mentionnée.

28voto

n8wrl Points 12485

Question stupide : pourrait-il y avoir deux automapper.dll ? Une avec un espace de noms AutoMapper et l’autre sans ? Vérifiez les chemins d’accès dans les deux projets.

Été là...

Également remarqué l’ordre de l’utiliser est différent. Ne doit pas question, mais avez-vous essayé de mélanger ?

20voto

Anonymous Points 31

Si votre classe ne compile pas, même si c’est dans le projet de vérifier ces derniers :

  1. Si le nom de classe est exactement la même
  2. Si, espace de noms est exactement la même
  3. se présentent des propriétés de la classe build action = compilation

7voto

onurb84 Points 31

J'ai un problème similaire avec les références de ne pas être reconnu dans VS2010 et les réponses aux présentes n'ont pas été en mesure de le corriger.

Le problème dans ma solution a été liée à l'extension de la voie où le projet référencé était situé. Comme je travaille avec SVN, j'ai fait une branche d'un référentiel de faire des essais et de la branche ont augmenté deux niveaux dans la structure de chemin d'accès, donc, le chemin est devenu trop long pour être utilisable dans windows. Ce ne jetez pas d'erreur mais ne reconnaissent pas l'espace de noms de la référence du projet. Quand j'ai corriger l'emplacement du projet d'avoir un petit chemin tout s'est bien passé.

5voto

Ankur-m Points 83

Dans mon cas, la dll référencée a été construit dans une version plus récente du .net Framework. Après que j’ai ajouté la référence, je pourrais l’utiliser. Mais dès que j’ai fait une compilation, l’erreur « référence manquante » sautera vers le haut. J’actualise la dll l’erreur ira, mais il n’aurait jamais construire. Ce post m’a fait vérifier la version du framework, et ainsi j’ai pu le résoudre en construisant le projet référencé dans la même version.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X