2010-10-21 6 views
6

Je suis dans un projet C#, dans ce projet je référence (en utilisant une référence de projet) une autre bibliothèque de classes écrite dans vb.net. Maintenant, lorsque je clique avec le bouton droit et affiche la définition de la classe. Cela ne m'amène pas au code source exact dans le projet vb.net, mais plutôt à une représentation C# générée dynamiquement de la classe vb.net.Traiter des projets C# et VB.net dans la même solution

J'ai essayé l'expérience à l'envers, en commençant par un projet vb.net, et en référençant le projet aC#, cette fois sur une définition de clic droit, cela me mène à l'explorateur de code, encore une fois, pas l'original code pour l'édition.

Si les deux projets sont dans la même langue, tout fonctionne correctement.

Y at-il une explication à cela? Et peut-être une solution pour permettre la navigation de code facile entre les projets de différentes langues?

Reproduire:

  1. Créer une solution à blanc
  2. Ajouter une bibliothèque aC# class
  3. Ajouter une bibliothèque de classe vb.net
  4. Dans la bibliothèque de classe vb.net, Class1 - créer une ancienne méthode. (En option)
  5. Dans la classe C#, ajoutez une référence à la classe vb.net, par exemple:

    VBClassLibrary.VBClass MyVBClass = new VBClassLibrary.VBClass();

Maintenant, faites un clic droit sur VBCLass et sélectionnez "Aller à la définition".

Avis où vous finissez par ....

Répondre

7

Il n'y a rien que vous fassiez mal ici. C'est un effet secondaire de la conception de Visual Studio. Lorsque vous avez deux projets dans des langages différents, une référence entre eux ne se comporte pas comme une référence de projet mais ressemble plutôt à une référence de fichier.

Les références Projet à Projet de la même langue partagent un même service linguistique. Par conséquent, il est en contrôle de tout son code et peut fournir des avantages spéciaux de contenu en direct. Le premier étant la définition de goto et l'intellisense instantanée. Visual Studio ne dispose actuellement d'aucune fonctionnalité permettant aux services linguistiques de communiquer entre eux à travers la limite de référence comme vous le souhaitez.

+3

J'ai couru dans exactement la même chose. Un autre effet secondaire ennuyeux est l'information de l'étiquette

ne franchit pas non plus la frontière de la langue dans l'IDE. – RQDQ

0

Pour « goto definiton », vous pouvez utiliser à la place « naviguer vers » (ctrl + commma)

Questions connexes