Estou recebendo este erro:
Não foi possível encontrar o tipo ou nome do namespace 'AutoMapper' (está faltando uma diretiva de uso ou uma referência de montagem?)
O engraçado é que eu já tenho essa referência no meu projeto:
E este é o meu 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>();
}
A outra coisa estranha é que tenho dois outros projetos em minha solução que usam o AutoMapper e fazem referência exatamente ao mesmo arquivo do AutoMapper.dll. Ambos funcionam perfeitamente bem.
Aqui está uma captura de tela de um:
e aqui está esse código (que compila bem):
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 as referências parecem ter os mesmos dados na página de propriedades.
o que estou perdendo?
Eu tentei:
- Reiniciando o Visual Studio
- Referenciando sem uma declaração using (ie
AutoMapper.Mapper.CreateMap
) - Limpar e reconstruir
Alguma outra ideia?
Respostas:
Verifique se o seu projeto não está configurado para usar o .NET Framework 4 Client Profile.
Você pode verificar / alterar isso clicando com o botão direito do mouse em seu projeto (não na solução), selecione Propriedades -> Aplicativo -> Estrutura de destino . A estrutura de destino é uma lista suspensa nessa página.
Esse é um problema no Visual Studio (eu chegaria ao ponto de chamá-lo de bug). O AutoMapper requer assemblies excluídos do .NET Framework 4 Client Profile. Como seu projeto está usando essa versão da estrutura, ele quebra.
Um erro semelhante será propagado para o processo de criação quando a versão do .NET Framework para o projeto que você está referenciando for superior ao projeto que está fazendo a referência. ou seja, um projeto direcionado ao 4.5 que referencie um projeto direcionado ao 4.5.1 fornecerá o mesmo erro.
É necessário que exista uma mensagem de erro melhor quando isso acontece, porque não há uma explicação racional para o motivo de ela não ter sido criada, pois a mensagem de erro diz para você fazer referência a uma montagem que você claramente referenciou.
fonte
Deixe-me fazer uma pergunta estúpida: poderia haver dois arquivos automapper.dll ? Um com um
AutoMapper
espaço para nome e outro sem? Confirme os caminhos nos dois projetos.Notei também que a ordem dos
using
comandos é diferente. Não deveria importar, mas você tentou embaralhá-los?fonte
Se sua classe não compilar, mesmo se estiver no projeto, verifique estes:
fonte
Essa deve ser a solução mais simples se todas as outras respostas não ajudarem você.
Eu estava pesquisando o que havia de errado com minha configuração entre as respostas, tentei todas elas - nenhuma funcionou e então percebi que o Visual Studio 2018 foi desenvolvido pela Microsoft . Então eu fiz o que a maioria das pessoas faz,
Reiniciou o Visual Studio e funcionou
fonte
Resolvi esse problema clicando com o botão direito do mouse na pasta que continha os arquivos e escolhendo Excluir do projeto e, em seguida, clicando com o botão direito do mouse novamente e selecionando Incluir no projeto (primeiro é necessário ativar Mostrar todos os arquivos para tornar visível a pasta excluída)
fonte
¯\_(ツ)_/¯
Eu tenho um problema semelhante com as referências não sendo reconhecidas no VS2010 e as respostas aqui não foram capazes de corrigi-lo.
O problema na minha solução estava relacionado à extensão do caminho em que o projeto referenciado estava localizado. Enquanto trabalho com o SVN, criei uma ramificação de um repositório para fazer alguns testes e essa ramificação aumentou dois níveis na estrutura do caminho, portanto, o caminho ficou muito longo para ser usado no Windows. Isso não gerou nenhum erro, mas não reconheceu o espaço para nome da referência do projeto. Quando corrijo a localização do projeto para ter um caminho menor, tudo correu bem.
fonte
No meu caso, a dll referenciada foi criada na versão superior do .Net Framework. Depois de adicionar a referência, eu poderia usá-la. Mas assim que eu fiz uma compilação, o erro 'referência ausente' será exibido. Eu atualizo a dll, o erro continuará, mas ele nunca criaria. Este post me fez verificar a versão do framework e, portanto, eu poderia resolvê-lo criando o projeto referenciado na mesma versão.
fonte
Talvez a tabela de tipos do projeto esteja em um estado incorreto. Eu tentaria remover / adicionar a referência e, se isso não funcionasse, criar outro projeto, importar meu código e ver se isso funcionaria.
Eu me deparei com isso enquanto usava o VS 2005, mas seria de esperar que a MS tivesse corrigido esse problema em particular agora.
fonte
A pergunta já foi concedida, mas há detalhes adicionais ainda não descritos que precisam ser verificados.
Eu também estava tendo esse comportamento, onde o projeto B foi referenciado no projeto A, mas o espaço para nome do projeto B não foi reconhecido no projeto A. Depois de algumas escavações, descobri que meu caminho era muito longo. Ao reduzir o caminho dos projetos (A e B), as referências se tornaram visíveis e disponíveis.
Testei essa teoria criando o projeto C com uma profundidade de caminho muito menor. Referenciei o projeto C no projeto A. As referências funcionaram corretamente conforme o esperado. Em seguida, removi o projeto C da solução, apenas mudei o projeto C para um caminho mais profundo, igual ao projeto B, adicionei o projeto C de volta à solução e tentei compilar. Eu não tinha mais visibilidade para projetar objetos C.
fonte
No meu caso, eu copiei uma biblioteca de classes e não alterei o "Nome do assembly" nas propriedades do projeto, portanto uma DLL estava substituindo a outra ...
fonte
Isso aconteceu comigo no Visual Studio 2019. Para mim, eu estava tentando fazer referência a outro projeto na minha solução. Aqui estão as etapas que eu tomei para ajudar outras pessoas:
Fiquei confuso porque ainda estava recebendo o erro após as etapas 1 e 2, mas a criação do projeto pareceu resolvê-lo.
fonte
Eu enfrentei um problema semelhante de o namespace / método não ser encontrado durante a execução, embora tenha sido bom durante a compilação, e o motivo disso parece ser que o assembly que eu estava referenciando foi implantado no GAC e, desde então, foi alterado, por isso, quando referenciei o assembly no Visual Studion, ele usava o mais recente, mas durante o tempo de execução, a versão do GAC havia sido usada.
fonte
No meu caso, obtive o erro apenas no VS 2015. Ao abrir o projeto no VS 2017, o erro desapareceu.
fonte
Louco. Eu sei.
Tentei todas as opções aqui. Reiniciando, limpando, verificando manualmente as DLLs geradas (isso é inestimável para entender se é realmente você quem fez essa bagunça).
Consegui fazê-lo, definindo a verbosidade do MSBuild como "Detalhado" em Opções.
fonte
Esta pergunta já foi respondida para o pôster original, mas caso alguém o encontre em um projeto do MS-Test:
no Visual Studio, clique no menu Teste -> Configurações de teste -> Arquitetura padrão do processador e verifique se a arquitetura corresponde à da outra montagem que você está referenciando. Se o outro conjunto for x64 e as configurações de teste forem x86, os sintomas que o pôster original apresentava.
fonte
Eu estava trabalhando no projeto Xamarin e, como sempre, a exclusão da pasta obj e a reconstrução resolveram meu problema, o espaço para nome que meu VS não estava reconhecendo era um código no meu próprio projeto BTW
fonte
No meu caso, remover / adicionar essa montagem funcionou.
fonte
Eu tive um problema semelhante, que demorou um pouco para solucionar, então pensei em compartilhá-lo:
O espaço para nome que não pôde ser resolvido no meu caso foi Company.Project.Common.Models.EF . Eu adicionei um arquivo em um novo espaço para nome Company.Project.BusinessLogic.Common .
A maioria dos arquivos estava tendo um
E, em seguida, referenciando os modelos como Common.Models.EF . Todos os arquivos que também tinham um
Estavam com falha porque o VS não pôde determinar qual namespace usar.
A solução foi alterar o segundo espaço para nome para Company.Project.BusinessLogic.CommonServices
fonte
Reiniciando o Visual Studio 2019 - foi o que fez.
fonte