Tenho uma solução que contém um site e uma biblioteca de classes no Visual Studio 2008.
Em seguida, tenho outro projeto de site fora da solução que precisa fazer referência à biblioteca de classes. Eu clico com o botão direito na pasta Bin ou Projeto e seleciono Adicionar Referência, então seleciono meu Projeto de Biblioteca de Classes, ele adiciona as 15 ou mais DLLs que a biblioteca de classes precisa para a pasta bin sites, mas nenhum dos arquivos .cs reconhece as instruções de uso.
using MyLibrary.MyFolder;
Ele diz que não pode resolvê-lo e o ReSharper apenas diz que pode ser removido com segurança, pois não está sendo usado.
O ReSharper pode reconhecer que precisa da referência e sugere que "Referencie a minha biblioteca e use a minha pasta". Não sei por que está sugerindo que eu adicione uma referência que já tenho. Quando vou com a sugestão, recebo o erro
"Falha ao referenciar o módulo. Provavelmente, a referência produzirá dependências circulares entre os projetos."
Tentei ir às páginas de propriedades dos sites e remover todas as referências e adicioná-las novamente, mas deu os mesmos erros. Alguma ideia de por que isso não está funcionando?
fonte
Respostas:
Além disso, verifique se os projetos da nova solução são executados em uma estrutura compatível com o projeto que você está tentando incluir. Eu estava tentando incluir uma referência a um projeto 4.0 em um projeto 3.5.
fonte
Eu descobri como resolver esse problema (pelo menos para mim). Por que funcionou, não tenho certeza, mas funcionou. (Acabei de experimentar um segundo site que estava tendo o mesmo problema e a solução a seguir funcionou para isso também).
Tentei a limpeza normal dos projetos e a reconstrução, desligando todas as minhas instâncias do Visual Studio e reiniciando-as, até tentei reiniciar meu computador.
O que realmente funcionou foi abrir o projeto no Visual Studio, fechar todas as guias abertas e, em seguida, desligá-lo.
Antes eu deixava as guias abertas porque não achava que isso importava (e quase nunca fecho as guias que estou usando).
fonte
Uma possibilidade é que a versão de destino do .NET Framework da biblioteca de classes seja superior à do projeto.
fonte
Eu tive um problema semelhante, todas as minhas referências foram bagunçadas pelo Resharper - A solução que funcionou para mim é limpar o Cache de ReSharper e reiniciar o VS
ferramentas-> opções-> resharper-> opções-> geral-> clique no botão limpar caches e reinicie o VS
fonte
Eu tive problemas semelhantes onde algumas vezes o VS compilava e às vezes não. Após algumas pesquisas e tentativas, descobri que tinha uma referência ambígua a uma classe com o mesmo nome em diferentes bibliotecas ('FileManager'). O projeto que não iria construir foram meus testes de unidade que fazem referência a todos os módulos em minha solução. Impor a referência a um módulo específico resolveu as coisas para mim.
Meu ponto é: em vez de culpar o ReSharper ou o VS, pode ser uma boa ideia verificar se realmente não existe algum tipo de referência circular de alguma forma. Mais do que frequentemente, classes com os mesmos nomes em módulos diferentes podem causar confusão e geralmente é um sintoma de design ruim (como no meu caso).
fonte
The type or namespace name 'A' does not exist in the namespace 'B'
. Observe que nenhum aviso aparece para isso ...Isso soa como um problema semelhante com o ReSharper:
http://www.jetbrains.net/devnet/thread/275827
De acordo com um usuário no thread, forçar uma compilação corrige o problema (CTRL + Shift + B) após a primeira compilação.
Parece um problema com o ReSharper, especificamente no caso deles. Você tentou construir independentemente dos avisos e de possíveis erros falsos?
fonte
Como os dois estão na mesma solução, em vez de adicionar uma referência à DLL, adicione uma referência ao próprio projeto de biblioteca de classes (a caixa de diálogo Adicionar Referência terá uma guia para isso).Ahh, é uma solução diferente. Perdi isso. Que tal você tentar em vez de adicionar uma referência ao projeto adicionando uma referência à DLL compilada de sua biblioteca de classes. A caixa de diálogo Adicionar Referência possui uma guia Procurar que faz isso.
fonte
Se você estiver fazendo referência a assemblies para projetos que estão na mesma solução, adicione uma referência de projeto (usando a guia "Projetos") em vez de navegar pela dll na pasta \ bin \ Debug (ou \ bin \ Release) (usando o Guia "Navegar"). Veja a captura de tela abaixo. Procure o arquivo assembly / dll apenas se ele for considerado um assembly externo.
fonte
Excluí * .csproj.user (arquivo resharper) do meu projeto, fechei todas as guias e reabri-o. Depois disso, consegui compilar meu projeto e não houve avisos de redefinição.
fonte
Eu tive esse problema. Levei séculos para descobrir. Eu tinha pessoas por cima do meu ombro para ajudar. Nós reconstruímos, limpamos e reiniciamos o Visual Studio e isso não corrigiu. Removemos e adicionamos novamente as referências ...
Tudo em vão .... Até!
A solução para meu problema foi que minha declaração de classe foi escrita incorretamente.
Antes de começar a me julgar com severidade, permita-me explicar por que não foi estúpido e também por que esse erro pode ser cometido até mesmo pelo mais inteligente dos programadores.
Como o erro estava no início do nome, ele não estava aparecendo na lista de classes da Intellisense quando comecei a digitar.
por exemplo
Nome da classe:
Message.cs
Declaração:
À primeira vista e em uma fonte pequena, Massage parece idêntico a Message.
Digitar M listou muitas classes, então digitei e, que não apareceu na versão digitada incorretamente, o que deu a impressão de que a classe não estava sendo captada pelo compilador.
fonte
Depois de confirmar que a mesma versão do asp.net estava sendo usada. Tirei o projeto. limpou a solução e adicionou novamente o projeto. Isto é o que funcionou para mim.
fonte
Tive um problema semelhante no VS 2010, ao criar um projeto de teste para um aplicativo MVC 2. Os sintomas eram idênticos.
A mensagem do ReSharper foi um tanto enganosa. Por um momento, ignorei completamente o ReSharper e o fiz do "modo VS manual":
Nesse estágio, recebi um erro de compilação: deveria ter referenciado o
System.Web.Mvc
assembly em meu projeto de teste (suspiro). Adicionar esta referência faz com que o projeto seja compilado. Os problemas do ReSharper permanecem, mas o executor de teste do ReSharper funciona.Quando eu reinicio o VS, os erros do ReSharper também desapareceram. Não tenho certeza se a reinicialização é necessária - simplesmente fechar o arquivo .cs pode ser suficiente.
De agora em diante, quando vir a mensagem ReSharper
Vou ler
fonte
Outra possível correção que funcionou para mim:
Se você tiver o Assembly A, que faz referência ao Assembly B, ambos fazendo referência a um assembly X não relacionado ao projeto (externo), e o código do Assembly B não reconhecerá que você fez referência a X, tente as seguintes etapas em ordem:
Aparentemente, o VS não reconhecerá uma referência a um assembly externo em um projeto que é uma dependência de outro projeto que já faz referência ao externo. Ao configurar as referências novamente do zero, você supera isso. É muito estranho.
fonte
Enfrentei esse problema e resolvi fechando o Visual Studio, reabrindo o Visual Studio, limpando e reconstruindo a solução. Isso funcionou para mim.
fonte
Se estiver usando o TFS, a execução de Obter o mais recente (recursivo) nem sempre funciona. Em vez disso, eu forço obter o mais recente clicando em Controle de código-fonte => Obter versão específica e clicando em ambas as caixas. Isso tende a funcionar.
Se ainda não funcionar, a exclusão do arquivo suo (geralmente encontrado no mesmo lugar da solução) força o visual studio a obter todos os arquivos da fonte (e posteriormente reconstruir o arquivo suo).
Se isso não funcionar, tente fechar todos os seus arquivos abertos e fechar o Visual Studio. Na próxima vez que você abrir o Visual Studio, ele deve estar consertado. Há um bug de resharper que é resolvido dessa forma.
fonte
Eu tinha me deparado com um problema semelhante recentemente. Estou trabalhando no Visual Studio 2015 com Resharper Ultimate 2016.1.2. Eu estava tentando adicionar uma nova classe à minha base de código ao tentar fazer referência a uma classe de outro assembly, mas o Resharper geraria um erro para esse pacote.
Com a ajuda de um colega de trabalho, descobri que a classe referenciada existia no namespace global e não estava acessível na nova classe, pois estava oculta por outra entidade de mesmo nome que existia no namespace atual.
Adicionar uma palavra-chave 'global ::' antes do namespace necessário me ajudou a fazer referência à classe que eu estava procurando. Mais detalhes sobre isso podem ser encontrados na página listada abaixo:
https://msdn.microsoft.com/en-us/library/c3ay4x3d.aspx
fonte
Se os dois projetos estiverem contidos na mesma solução, será mais apropriado adicionar a referência para o projeto de que precisa, e não sua dll compilada.
fonte
Infelizmente, a única coisa que funcionou para mim foi excluir completamente e recriar o projeto da biblioteca de classes, depois de ter copiado temporariamente os arquivos da classe em outro lugar. Só então o projeto da web ASP.Net reconheceria as
using
instruções que se referiam ao projeto de biblioteca de classes. Isso foi com o Visual Studio 2010, não usando ReSharper.fonte
Eu tive um problema semelhante. O que funcionou para mim é que eu adicionei a Biblioteca de Classes errada do Visual Studio . Eu adicionei usando o recurso de pesquisa do Visual Studio.
O que eu precisava fazer era Adicionar novo projeto> Visual C #> Biblioteca de classes . E esta biblioteca de classes recém-adicionada é a certa e agora pode ser adicionada como referência para qualquer projeto.
fonte
Você pode esquecer de adicionar referência à biblioteca de classes que você precisava importar.
Clique com o botão direito na biblioteca de classes para a qual deseja importar (que contém várias bibliotecas de classes importadas), -> Adicionar-> Referência (Selecione Projetos-> Solução-> selecione a biblioteca de classes da qual deseja importar-> OK)
fonte