Visual Studio 2015 ou 2017 mostra erros do IntelliSense, mas a solução é compilada

122

No momento, estamos avaliando o novo Visual Studio 2015 e encontramos um problema estranho com o IntelliSense. Quando compilei nossa solução principal com o novo estúdio, a compilação foi bem-sucedida, mas, no entanto, 6 erros são mostrados.

Descobri que não é um erro real, mas apenas um erro de senso comum. O código está definitivamente correto e tudo foi compilado com sucesso. No entanto, o código está marcado em vermelho e os erros aparecem na lista de erros.

Todos os 6 erros têm a mesma origem. É uma simples chamada de construtor. Estranho o suficiente, mas também existem algumas ocorrências do mesmo construtor, sem erros.

A mensagem de erro:

Code: CS1729
Message: '<the class>' does not contain a constructor that takes that many arguments.
Project: <the project name>
File: <the path to the file>

O novo estúdio foi instalado em um Windows 7 recém-instalado, sem nenhum software legado (sem VS13).

Eu já tentei limpar os caches, excluí o arquivo suo, excluí os diretórios bin e obj, limpou e reconstruiu a solução etc. Mas nada funcionou.

Alguém pode me explicar esse comportamento?

Cinza
fonte
2
O analisador usado pelo intellisense não é o mesmo que o compilador usado para realmente compilar o código.
Chill
1
Isso também acontece no VS 2013. Pode ser que o VS ainda não tenha terminado de indexar toda a base de códigos. Se ele compilar e funcionar como esperado, não prestarei atenção a ele.
Code Different
2
@chill No VS2015, ele deve ser o mesmo analisador, parte de Roslyn.
Lasse V. Karlsen
1
Você pode criar um pequeno projeto que reproduz o problema? Se sim, você pode postar o código?
Lasse V. Karlsen
A classe é parcial ou alguma parte dela é gerada em tempo de compilação?
Panagiotis Kanavos

Respostas:

58

Também tive esse problema com um projeto migrado, então eu referenciei a dll Microsoft.CSharp. Em alguns projetos, eu precisei remover e adicionar novamente a Referência no projeto.

Guilherme de Jesus Santos
fonte
3
Eu tive que fazer isso quando um membro da equipe adicionou um novo projeto à solução e migrou alguns arquivos cs de um projeto existente para o novo. Quando cheguei mais recente, vi muitos erros, mas era possível compilar e executar. Descartar e adicionar novamente a referência ao novo projeto do projeto ofendido funcionou para mim.
Bill
1
Exatamente a mesma situação que Bill descreveu aconteceu conosco. Algumas classes foram movidas para um novo projeto. Parece que o Visual Studio não atualizou seu cache Intellisense quando uma nova referência de projeto foi importada do controle de origem. Reinserir a referência manualmente forçou o VS a fazer isso.
Peter Macej 27/01
2
A solução é compilada, mas mostra erros irregulares em alguns arquivos. Nenhum erro foi mostrado em "Release", apenas em Debug. Removido Microsoft.CSharp, e os erros desapareceram, obrigado!
Michael Michael
@ Michael Obrigado por essa dica. Eu tenho exatamente a mesma questão. Não há erros na versão, mas muitos erros na depuração.
usar o seguinte comando
Se a classe mencionada for seu próprio código, você pode simplesmente excluir e incluir o arquivo que contém a classe. Ele deve acionar o VS para atualizar o IntelliSense. #awfulbug
David S.
198

Eu tive milhares de erros do intellisense e 0 erros de construção. Depois de excluir o .suoarquivo e reiniciar o VS, os erros do intellisense desaparecem.

Suo O arquivo está localizado relativamente à origem em: .vs\SolutionName\v14\.suo

De acordo com o comentário: Cuidado com o *.suoarquivo oculto.

Editar: de acordo com os comentários, o VS2017 tem o mesmo problema, para que você possa usar uma solução semelhante: Excluir.vs\SolutionName\v15\.suo

Karel Kral
fonte
7
Apenas uma observação: os *.suoarquivos podem estar ocultos em alguns casos. Então, você precisa habilitar a View Hidden filesopção do Windows Explorer.
Athafoud
6
Matar o .suo não teve efeito para mim, mas a exclusão do diretório bin e obj e, em seguida, a reconstrução da solução.
Holger Böhnke
A exclusão do arquivo .suo não resolveu o problema para mim (no VS2015). Estou recebendo o rabisco vermelho espúrio em javascript que faz referência a propriedades do code-behind: <%=Foo%>dizendo que a variável não é declarada, mas tudo funciona em tempo de execução.
29417 Tim
Não tenho 100% de certeza, mas isso também pode ter corrigido erros de marcação inválidos que eu estava obtendo com o XAML
Geordie
encontrar . -name "* suo" -exec rm -rf {} \;
Derek Greer
20

Ocorreu um problema semelhante no Visual Studio 2017 ASP.Net Core Project. As etapas a seguir fizeram o truque para mim

  1. Executar solução limpa
  2. Fechar VS
  3. Excluir arquivo .suo e excluir diretórios bin / obj
  4. Reabrir VS
Naren
fonte
1
Isso funciona, mas é uma coisa tediosa de fazer de vez em quando. Eu sempre tenho esse problema ao criar no modo de lançamento. Estranho VS não pode descobrir por si só.
Nawfal
12

Problema semelhante aos outros, mas com resolução diferente. Postagem caso eu possa ajudar outra pessoa.

Executando o Visual Studio 2017 15.5.2. Eu uso o Git e frequentemente alterno ramos. Várias semanas atrás, comecei a fazer com que os editores me mostrassem erros (todos relacionados a tipos que não foram encontrados, mesmo que as referências fossem válidas). Compilar funcionou muito bem. Confirmei o mesmo problema no VS 2017 15.6 Preview (6 de janeiro de 2018). Eu tentaria excluir cache, arquivos SUO ou pastas bin / obj e sem impacto. A princípio, parecia funcionar. Reabra o Visual Studio e tudo ficaria bem. Use "Rebuild Solution" e os erros do IntelliSense retornariam. Eu até tentei desinstalar / reinstalar o Visual Studio.

Eu tive o mesmo problema em duas máquinas, ambas com a mesma versão do Visual Studio.

Observando os erros sobre tipos ausentes, todos pareciam vir de dois projetos referenciados. Uma dessas referências era um projeto compartilhado usado por quase todos os outros projetos da solução, mas um deles era um projeto pequeno, sem muitas referências. Acontece que o projeto pequeno também foi referenciado pelo meu projeto compartilhado maior. No Visual Studio, descarreguei o pequeno projeto e o recarreguei. Os erros foram embora! Os erros não voltaram no Rebuild Solution.

Troquei as ramificações do Git e todos os erros voltaram. Felizmente, repeti as etapas acima para descarregar / recarregar o projeto pequeno e os erros desapareceram.

Toda vez que troco as ramificações do Git, os erros retornam até que eu repita esse processo. Existem zero alterações entre as ramificações do Git para o projeto menor que eu descarrego / recarrego. Não está claro por que essa sequência está corrigindo meu problema.

HgCoder
fonte
Com base nisso, descarreguei três projetos relacionados a "Teste" ou "Arquitetura", depois carreguei e recarreguei o projeto preenchido por erros do Intellisense (WPF). 0 de 0 erros :) +1 pelos detalhes discretos que me levaram a tentar algo semelhante a você HgCoder!
Steven_BDawg
Usando o VS 2017 15.9.9. Usando Git. Usando R #. Também troco de galho regularmente. Meus erros são de fato todos IntelliSense. Percebo que o descarregamento do projeto faz com que a coluna "Projeto" (na guia Lista de erros) vá para <Desconhecido>. Então, parece estar chutando um pouco. Descarregar projetos parece ter funcionado para mim também. Uma solução limpa + solução de reconstrução finalmente produziu 0 erros.
dthal
7

Também teve esse problema (o título, não a mensagem de erro específica), bem como linhas irregulares no editor. A primeira linha ondulada está sob a primeira #includeinstrução, que nomeia um cabeçalho pré-compilado. O Intellisense falha ao incluir o cabeçalho pré-compilado, mas não o lista como erro; em vez disso, lista os erros mais abaixo no arquivo, no código que (com muita razão) depende de declarações no cabeçalho pré-compilado.

O motivo pelo qual o Intellisense não encontra o cabeçalho pré-compilado no meu ambiente é que o cabeçalho nomeado não é um arquivo real. Ele não precisa estar em nenhuma outra versão de VC ou gcc que eu usei, nem no compilador de 2015, desde que as configurações de cabeçalho pré-compiladas estejam configuradas corretamente. Aparentemente, não existe mais para o Intellisense. Não tenho certeza se foi diferente em 2013, talvez eu nunca tenha notado.

No caso improvável de que esse seria o problema relatado aqui, a solução é simples: crie um arquivo pequeno com o nome pretendido do cabeçalho pré-compilado, conforme especificado nas #includediretivas, e deixe esse arquivo incluir o nome real do cabeçalho pré-compilado.

Se você se pergunta ... por que essa distinção entre o nome do cabeçalho pré-compilado na instrução '#include' e o nome do arquivo real do cabeçalho pré-compilado? Precisamente porque garante que as configurações de cabeçalho pré-compiladas estão definidas corretamente. Onde quer que um cabeçalho pré-compilado seja "#included", não há nenhum arquivo ao redor que possa ser incluído. Uma versão realmente pré-compilada (binária) do cabeçalho real é lida ou a compilação falha. Obviamente, uma desvantagem é que confunde as pessoas que leem o código, não apenas o Intellisense.

Stein
fonte
2

Visual Studio 2017 Excluí o arquivo ".suo" do local .vs \ SolutionName \ v15.suo E, em seguida, reiniciei o Visual studio. Isso funcionou para mim.

Saurabh Raoot
fonte
2

Hoje, tive um problema semelhante com o MSVC ++ 2015. Quase desisti e decidi continuar sem dicas de IDE, mas de repente percebi que stdafx.h do projeto com o qual tive problemas não contém cabeçalhos de biblioteca padrão. Especulei que a inclusão de todos os cabeçalhos padrão usados ​​no projeto no stdafx.h pode aumentar a velocidade de compilação, no entanto, isso também corrigiu os erros do Intellisense.

Ameaça menor
fonte
1

Eu tive vários stdfax.hem diretórios de inclusão adicionais. Verifique se o que stdafx.hvocê pretendeu é o primeiro no seu caminho.


fonte
1

Eu tive um problema semelhante com diferentes versões do Visual Studio.

Excluir a pasta .suo ou .vs não ajudou em nada.

A solução para mim foi que eu tinha a extensão StopOnFirstBuildError ativa. Depois de desativar "Parar a criação no primeiro erro" no menu compilar, e depois que a solução foi totalmente criada, os erros mostrados pelo Intellisense desapareceram.

Fabian
fonte
1

Eu estava vendo os erros de pesquisa inteligente apenas ao publicar um site. (Site ASP / C #, VS 2017). Eles quebraram a publicação. O site funcionou bem localmente.

Limpou os erros desmarcando a configuração para pré-compilar e publicou bem. Publicar -> Configuração -> Opções de publicação de arquivo -> Pré-compilar durante a publicação

Rahn
fonte
1

No Visual Studio 2019, o problema está em alterar ramificações com o Git quando há pacotes NuGet instalados no projeto. O que eu fiz para resolver isso:

  1. Solução Limpa
  2. Feche o Visual Studio
  3. Exclua a pasta packages
  4. Abra o Visual Studio
  5. Vá para o Gerenciador de Pacotes
  6. Restaurar todos os pacotes
  7. Recompilar
  8. Se estiver faltando roslyn, feche e abra o Visual Studio e recompile.
Daniel Lobo
fonte