Frage

Ich bin absolut durch die Tatsache verblüfft, dass MS konnte einfach nicht bekommen es richtig auf die Definition eines Verfahrens zu navigieren, wenn Sie C # und VB-Projekte in einer Lösung sind kombiniert. Wenn Sie versuchen, von VB zu C # zu navigieren, bringt es das „Objekt-Explorer“, und wenn von C # VB, erzeugt es eine Metadatendatei.

Ehrlich gesagt, was über das Springen zwischen verschiedenen Sprachen so kompliziert ist, vor allem, wenn sie angeblich die gleiche CLR verwenden?

Wer weiß, warum dies so ist, oder wenn eine Abhilfe ist da? Haben sie es richtig in VS 2008 zu bekommen?


@Keith, ich fürchte, Sie über Ihre Antwort richtig sein kann. Ich bin wirklich erstaunt, dass Microsoft diese so schlecht vermasselt. Hat jemand irgendwelche Ideen für dieses Problem zu umgehen haben?


@Mladen Mihajlovic - das ist genau die Situation, die ich beschreibe. Probieren Sie es selbst heraus; Projektreferenzen nicht einen Funken Unterschied machen.

War es hilfreich?

Lösung

Dies ist allgemein beiden Sprachen.

  • F12 in VB.Net bringt Sie immer auf den Objekt-Browser
  • F12 in C # immer führt Sie zu einer Meta-Daten Definition

Dies ist ein bewusster Mechanismus, um zu versuchen und für die Aktualisierung Benutzer erwartetes Verhalten zu entsprechen. Die C # Art und Weise gibt Ihnen die richtigen Informationen, aber die VB Art und Weise ist, was die Nutzer von VBA oder VB6 erwarten werden.

Das Verhalten ist das gleiche in VS2008.

Das sind die Regeln für externe Projekte sind, beide sollten Sie den Code nehmen, wenn sie in der gleichen Lösung ist.


Sie haben ganz recht - VB Projekte behandeln C # Projekte als externe und umgekehrt - man kann nicht von Code in einem zum anderen navigieren. Ich habe in der letzten VS2008 getestet dies und es ist immer noch ein Problem.

Es fehlt auch komplette Meta-Daten zu erhalten. Fügen Sie eine Methode zu Ihrem C # -Code und es wird nicht in VB Intellisense angezeigt, bis Sie die C # Montage kompilieren.

Dies ist ähnlich wie die Komponenten in dem Toolstrip erscheinen, so ich meint, die normale navigate Funktionalität zu codieren, eine Funktion von Code mit einem gemeinsamen Compiler ist, und alles anderes verwendet eine Art von Reflexion.

Solange Sie noch einen PDB Aufbau sollte es in der Lage sein, die Dateien zu finden, ich denke, es funktioniert nicht, weil sie es brauchen Release zu unterstützen zu aufbaut. Es konnte nicht die Codezeile ohne die HVE-Lookups finden.

Andere Tipps

Stellen Sie sicher, dass Ihr Hinweis auf die VB Projekt und nicht nur eine DLL-Datei.

scroll top