Intellisense no Visual Studio 2005 entre C# e VB - não é possível navegar para definições

StackOverflow https://stackoverflow.com/questions/63517

Pergunta

Estou absolutamente surpreso com o fato de que a MS simplesmente não conseguiu navegar corretamente até a definição de um método, quando você combina projetos C# e VB em uma solução.Se você estiver tentando navegar de VB para C#, ele abrirá o "Object Explorer" e, se estiver de C# para VB, gerará um arquivo de metadados.

Honestamente, o que há de tão complicado em alternar entre linguagens diferentes, especialmente se elas supostamente usam o mesmo CLR?

Alguém sabe por que isso acontece ou se há alguma solução alternativa?Eles acertaram no VS 2008?


@Keith, temo que você esteja certo sobre sua resposta.Estou realmente surpreso que a Microsoft tenha estragado tudo tanto.Alguém tem alguma idéia para uma solução alternativa?


@Mladen Mihajlovic - é exatamente essa situação que estou descrevendo.Experimente você mesmo;referências de projetos não fazem a menor diferença.

Foi útil?

Solução

Isso é geral para ambos os idiomas.

  • F12 em VB.Net sempre leva você para o navegador de objetos
  • F12 em C# sempre leva você a uma definição de metadados

Este é um mecanismo deliberado para tentar corresponder ao comportamento esperado dos usuários de atualização.O modo C# fornece as informações corretas, mas o modo VB é o que os usuários de VBA ou VB6 esperam.

O comportamento é o mesmo no VS2008.

Estas são as regras para projetos externos, ambos devem levar você ao código se estiver na mesma solução.


Você está certo - os projetos VB tratam os projetos C # como externos e vice-versa - você não pode navegar do código de um para outro.Eu testei isso no VS2008 mais recente e ainda é um problema.

Ele também não consegue obter metadados completos.Adicione um método ao seu código C# e ele não aparecerá no intellisense do VB até que você compile o assembly C#.

Isso é semelhante ao modo como os componentes aparecem na barra de ferramentas, então imagino que a funcionalidade normal de navegação para o código é um recurso do código com compiladores comuns, e todo o resto usa algum tipo de reflexão.

Contanto que você ainda esteja construindo um PDB, ele deverá ser capaz de encontrar os arquivos, acho que não, porque eles também precisam dele para suportar compilações de lançamento.Não foi possível encontrar a linha de código sem as pesquisas do PDB.

Outras dicas

Certifique-se de que sua referência seja ao VB projeto e não apenas um arquivo DLL.

É um problema conhecido, as soluções alternativas são duas:usar ctrl+, ou use algum plugin que adicione esta função, como resharper (que irá adicionar esta função no F12).

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top