Projeto referenciado é "perdido" em tempo de compilação

102

Tenho uma solução C # com dois projetos: um serviço (o projeto principal) e um logger. O serviço usa classes do logger. Eu adicionei uma referência ao projeto logger dentro do projeto de serviço. Em tempo de design, o autocomplete funciona bem: as classes do logger são visíveis, as referências que eu uso são coloridas apropriadamente.

Reconstruo a solução e as coisas dão errado. As referências não são mais reconhecidas: "O nome 'Logging' não existe no contexto atual 'e as classes não existem mais no preenchimento automático. Remover e reconectar a referência me leva de volta ao estado básico de ter os identificadores visíveis para o preenchimento automático.

Eu reiniciei, limpei todos os caches, certifiquei-me de que esta é a única instância do VS 2010 em execução na minha máquina.

Há algo óbvio (obviamente) que estou perdendo?

Bob Kaufman
fonte

Respostas:

158

Verifique os tipos de compilação de cada projeto nas propriedades do projeto - aposto que um ou outro será definido para compilar .NET XX - Client Profile.

Com versões inconsistentes, especificamente com um ser Client Profilee o outro não, ele funciona em tempo de design, mas falha em tempo de compilação. Uma verdadeira pegadinha.

Há algo engraçado acontecendo no Visual Studio 2010 para mim, que continua definindo projetos aparentemente aleatoriamente Client Profile, às vezes quando eu crio um projeto, às vezes alguns dias depois. Provavelmente algum atalho de teclado que estou acertando acidentalmente ...

Joshcomley
fonte
1
Aposto que você está certo ... e que vergonha se sim por não me lembrar dessa pergunta comparável que fiz no mês passado! stackoverflow.com/questions/3991361/…
Bob Kaufman
6
@Bob Isso continua sangrando acontecendo comigo, e assim como você teve aquela pergunta anterior, cada vez que acontece, por pelo menos alguns minutos, fico completamente confuso com a coisa toda até me lembrar "Oooooh, espere, cliente ** ** ing Profile "
joshcomley
4
Eu também estava tendo esse problema com o VS2012. Descobriu-se que não era o problema do Perfil do Cliente, mas que o projeto referenciado estava em 4.5 e o novo projeto referenciado havia padronizado para 4.0. Aumentei para 4.5 e o problema foi embora. A mesma solução, na verdade, apenas outra variação.
Brad Mathews
Isso aconteceu comigo recentemente no VS 2013. O projeto era o padrão 4.5, mas uma das bibliotecas foi construída em 4.5.2. Se o projeto for 4.5.2 e uma das bibliotecas for 4.5 ou 4.5.1, ele funcionará. Mas não o contrário.
ahwm
4

Certifique-se de que ambos os projetos tenham a mesma versão da estrutura de destino aqui: clique com o botão direito do mouse no projeto -> propriedades -> aplicativo (guia) -> estrutura de destino

Além disso, certifique-se de que o projeto "logger" (que você deseja incluir no projeto principal) tenha o tipo de saída "Class Library" em: clique com o botão direito do mouse no projeto -> propriedades -> aplicativo (guia) -> tipo de saída

Finalmente, reconstrua a solução.

manar
fonte