Intellisense dans Visual Studio 2005 entre C # et VB - impossible de naviguer vers les définitions

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

Question

Je suis absolument abasourdi par le fait que MS ne peut tout simplement pas comprendre correctement la définition d'une méthode, lorsque vous combinez des projets C # et VB dans une solution unique. Si vous essayez de naviguer de VB en C #, il ouvre l’explorateur "Object Explorer" et génère un fichier de métadonnées s'il passe de C # à VB.

Honnêtement, qu’est-ce qui est si compliqué de sauter d’une langue à l’autre, en particulier s’ils utilisent le même CLR?

Quelqu'un sait-il pourquoi, ou s'il existe une solution de contournement? Ont-ils réussi dans VS 2008?

@ Keith, j'ai bien peur que vous n'ayez raison de votre réponse. Je suis vraiment abasourdi que Microsoft ait tout gâché. Quelqu'un a-t-il des idées pour résoudre ce problème?

@Mladen Mihajlovic - c'est exactement la situation que je décris. Essayez vous-même; Les références de projets ne font pas la moindre différence.

Était-ce utile?

La solution

Ceci est général pour les deux langues.

  • F12 dans VB.Net vous amène toujours au navigateur d'objets
  • F12 en C # vous amène toujours à une définition de méta-données

Il s'agit d'un mécanisme délibéré pour essayer de faire correspondre le comportement attendu pour la mise à niveau des utilisateurs. Le mode C # vous donne les bonnes informations, mais le mode VB correspond aux attentes des utilisateurs de VBA ou VB6.

Le comportement est identique dans VS2008.

Ce sont les règles des projets externes, les deux devraient vous amener au code s'il se trouve dans la même solution.

Vous avez tout à fait raison - les projets VB traitent les projets C # comme des projets externes et inversement - vous ne pouvez pas naviguer d'un code à l'autre. J'ai testé cela dans le dernier VS2008 et c'est toujours un problème.

Il ne parvient pas non plus à obtenir des métadonnées complètes. Ajoutez une méthode à votre code C # et elle n'apparaîtra pas dans l'intellisense de VB jusqu'à ce que vous ayez compilé l'assemblage C #.

Ceci est similaire à la façon dont les composants apparaissent dans la barre d’outils. Je suppose donc que la fonctionnalité normale de navigation vers du code est une fonctionnalité du code utilisant un compilateur commun, et que tout le reste utilise une sorte de réflexion.

Tant que vous construisez toujours un PDB, il devrait pouvoir trouver les fichiers. Je suppose que ce n'est pas le cas, car ils en ont également besoin pour prendre en charge les versions. Il n'a pas pu trouver la ligne de code sans les recherches dans le PDB.

Autres conseils

Assurez-vous que votre référence concerne le projet VB et pas seulement un fichier DLL.

C’est un problème connu , la solution de contournement est double: utilisez ctrl +, ou utilisez un plugin qui ajoute cette fonction, comme resharper (qui ajoutera cette fonction dans le F12 ).

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top