Recibo este error:
No se pudo encontrar el tipo o el nombre del espacio de nombres 'AutoMapper' (¿le falta una directiva de uso o una referencia de ensamblaje?)
Lo curioso es que ya tengo esa referencia en mi proyecto:
Y este es mi código:
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>();
}
La otra cosa extraña es que tengo otros dos proyectos en mi solución que usan AutoMapper y hacen referencia al mismo archivo AutoMapper.dll. Ambos funcionan perfectamente bien.
Aquí hay una captura de pantalla de uno:
y aquí está ese código (que compila 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>();
}
Ambas referencias parecen tener los mismos datos en la página de propiedades.
¿Qué me estoy perdiendo?
Lo intenté:
- Reiniciar Visual Studio
- Hacer referencia sin una declaración de uso (es decir
AutoMapper.Mapper.CreateMap
) - Limpiar y reconstruir
¿Alguna otra idea?
Respuestas:
Verifique para asegurarse de que su proyecto no esté configurado para usar .NET Framework 4 Client Profile.
Puede verificar / cambiar esto haciendo clic derecho en su proyecto (no en la solución), seleccione Propiedades -> Aplicación -> Marco de destino . El marco de destino es un menú desplegable en esa página.
Este es un problema en Visual Studio (incluso iría tan lejos como para llamarlo un error). AutoMapper requiere ensamblajes que están excluidos del .NET Framework 4 Client Profile. Dado que su proyecto está utilizando esa versión del marco, se rompe.
Un error similar se propagará al proceso de compilación cuando la versión de .NET Framework para el proyecto al que hace referencia sea más alta que el proyecto que hace la referencia. es decir, un objetivo de proyecto 4.5 que hace referencia a un objetivo de proyecto 4.5.1 le dará este mismo error.
Es necesario que haya un mejor mensaje de error cuando esto sucede porque no hay una explicación racional de por qué no se generaría, ya que el mensaje de error le indica que haga referencia a un ensamblaje al que ha hecho referencia claramente.
fuente
Déjame hacerte una pregunta estúpida: ¿podría haber dos archivos automapper.dll ? ¿Uno con un
AutoMapper
espacio de nombres y otro sin? Confirme las rutas en ambos proyectos.También noté que el orden de los
using
comandos es diferente. No debería importar, pero ¿has tratado de barajarlos?fuente
Si su clase no se compila, incluso si está en el proyecto, verifique estos:
fuente
Esta tiene que ser la solución más simple si todas las otras respuestas no lo ayudan.
Estaba buscando lo que estaba mal con mi configuración entre las respuestas, las probé todas, ninguna funcionó, luego me di cuenta de que Visual Studio 2018 fue desarrollado por Microsoft . Entonces hice lo que la mayoría de la gente hace,
Reinició Visual Studio y funcionó
fuente
Resolví este problema haciendo clic derecho en la carpeta que contiene los archivos y seleccionando Excluir del proyecto y luego haciendo clic derecho nuevamente y seleccionando Incluir en el proyecto (primero debe habilitar Mostrar todos los archivos para que la carpeta excluida sea visible)
fuente
¯\_(ツ)_/¯
Tengo un problema similar con las referencias que no se reconocen en VS2010 y las respuestas en este documento no pudieron corregirlo.
El problema en mi solución estaba relacionado con la extensión de la ruta donde se encontraba el proyecto al que se hacía referencia. Como estoy trabajando con SVN, hice una rama de un repositorio para hacer algunas pruebas y esa rama aumentó dos niveles en la estructura de la ruta, por lo que la ruta se hizo demasiado larga para ser utilizable en Windows. Esto no arrojó ningún error pero no reconoció el espacio de nombres de la referencia del proyecto. Cuando corrijo la ubicación del proyecto para tener un camino más pequeño, todo salió bien.
fuente
En mi caso, el dll referenciado se compiló en una versión superior de .Net Framework. Después de agregar la referencia, podría usarla. Pero tan pronto como hice una compilación, aparecerá el error 'referencia faltante'. Actualizo el dll, el error desaparecerá pero nunca se generará. Esta publicación me hizo verificar la versión del marco y, por lo tanto, pude resolverla construyendo el proyecto referenciado en la misma versión.
fuente
Quizás la tabla de tipos del proyecto está en un estado incorrecto. Intentaría eliminar / agregar la referencia y, si eso no funcionara, crear otro proyecto, importar mi código y ver si funciona.
Me encontré con esto mientras usaba VS 2005, aunque uno esperaría que MS ya haya solucionado ese problema en particular ...
fuente
La pregunta ya se ha otorgado, pero hay detalles adicionales aún no descritos que deben verificarse.
Yo también estaba teniendo este comportamiento, donde se hizo referencia al proyecto B en el proyecto A, pero el espacio de nombres del proyecto B no se reconoció en el proyecto A. Después de investigar un poco, descubrí que mi camino era demasiado largo. Al reducir la ruta de los proyectos (tanto A como B), las referencias se hicieron visibles y disponibles.
Probé esta teoría creando el proyecto C a una profundidad de camino mucho menor. Hice referencia al proyecto C en el proyecto A. Las referencias funcionaron correctamente como se esperaba. Luego eliminé el proyecto C de la solución, simplemente moví el proyecto C a una ruta profunda, igual que el proyecto B, y agregué el proyecto C nuevamente a la solución, e intenté compilar. Entonces ya no tenía visibilidad para proyectar objetos C por más tiempo.
fuente
En mi caso, había copiado una biblioteca de clases y no había cambiado el "Nombre de ensamblado" en las propiedades del proyecto, por lo que una DLL sobrescribía la otra ...
fuente
Esto me sucedió en Visual Studio 2019. Para mí, estaba tratando de hacer referencia a otro proyecto en mi solución. Estos son los pasos que tomé en caso de que ayude a alguien más:
Estaba confundido porque seguía recibiendo el error después de los pasos 1 y 2, pero la construcción del proyecto parecía resolverlo.
fuente
Enfrenté un problema similar de espacio de nombres / método que no se encontró durante la ejecución, aunque estuvo bien durante la compilación, y la razón de esto parece ser que el ensamblado al que hacía referencia se implementó en GAC y desde entonces se modificó, por lo que cuando hice referencia al ensamblaje en Visual Studion estaba usando el más reciente, pero durante el tiempo de ejecución se había usado la versión para GAC.
fuente
En mi caso, recibí el error solo en VS 2015. Al abrir el proyecto en VS 2017, el error desapareció.
fuente
Loco. Lo sé.
Intenté todas las opciones aquí. Reiniciar, limpiar, verificar manualmente las DLL generadas (esto es invaluable para comprender si realmente fue usted el que cometió el error).
Lo hice funcionar estableciendo la Verbosidad de MSBuild en "Detallado" en Opciones.
fuente
Esta pregunta ya ha sido respondida para el póster original, pero en caso de que alguien se encuentre con esto en un proyecto de MS-Test:
desde Visual Studio, haga clic en el menú Prueba -> Configuración de prueba -> Arquitectura de procesador predeterminada y asegúrese de que la arquitectura coincida con la del otro conjunto al que hace referencia. Si el otro conjunto es x64 y su configuración de prueba es x86, puede experimentar los síntomas que tenía el póster original.
fuente
Estaba trabajando en el proyecto Xamarin y, como siempre, eliminar la carpeta obj y reconstruir resolvió mi problema, el espacio de nombres que mi VS no reconocía era un código en mi propio proyecto BTW
fuente
En mi caso, eliminar / agregar ese ensamblaje funcionó.
fuente
Tuve un problema similar, que tardó un poco en solucionarlo, así que pensé en compartirlo:
El espacio de nombres que no se pudo resolver en mi caso fue Company.Project.Common.Models.EF . Había agregado un archivo en un nuevo espacio de nombres Company.Project.BusinessLogic.Common .
La mayoría de los archivos tenían un
Y luego haciendo referencia a los modelos como Common.Models.EF . Todos los archivos que también tenían un
Fallaban ya que VS no podía determinar qué espacio de nombres usar.
La solución ha sido cambiar el segundo espacio de nombres a Company.Project.BusinessLogic.CommonServices
fuente
Reiniciar Visual Studio 2019, eso fue todo.
fuente