Visual Studio 2005 の C# と VB 間の Intellisense - 定義に移動できない
-
09-06-2019 - |
質問
C# プロジェクトと VB プロジェクトを 1 つのソリューションに組み合わせているときに、MS がメソッドの定義に正しく移動できなかったという事実には本当に驚きました。VB から C# に移動しようとすると、「オブジェクト エクスプローラー」が表示され、C# から VB に移動すると、メタデータ ファイルが生成されます。
正直に言うと、特に同じ CLR を使用していると思われる場合、異なる言語間を移動することの何がそんなに複雑なのでしょうか?
これがなぜ起こるか、または回避策があるか知っている人はいますか?VS 2008 では正しく理解できたでしょうか?
@Keith、あなたの答えが正しいかもしれないと残念に思います。Microsoft がこれをひどく台無しにしてしまったことには本当に驚いています。回避策について何かアイデアを持っている人はいますか?
@Mladen Mihajlovic – それはまさに私が説明している状況です。自分で試してみてください。プロジェクト参照は少しも違いを生みません。
解決
これは両方の言語に共通です。
- VB.Net の F12 キーを押すと、常にオブジェクト ブラウザが表示されます。
- C# の F12 キーを押すと、常にメタデータ定義が表示されます。
これは、ユーザーのアップグレードに予想される動作を一致させるための意図的なメカニズムです。C# の方法では正しい情報が得られますが、VBA または VB6 のユーザーが期待するのは VB の方法です。
VS2008でも動作は同じです。
これらは外部プロジェクトのルールであり、同じソリューション内にある場合は両方ともコードに移動する必要があります。
あなたはまったく正しいです - VB プロジェクトは C# プロジェクトを外部として扱い、その逆も同様です - あるコードから別のコードに移動することはできません。最新のVS2008でこれをテストしましたが、まだ問題があります。
また、完全なメタデータの取得にも失敗します。C# コードにメソッドを追加しても、C# アセンブリをコンパイルするまで、そのメソッドは VB のインテリセンスに表示されません。
これは、コンポーネントがツールストリップに表示される方法と似ているため、通常のコードへの移動機能は一般的なコンパイラを使用したコードの機能であり、それ以外はすべて何らかのリフレクションを使用していると考えられます。
PDB を構築している限り、ファイルを見つけることができるはずですが、リリース ビルドをサポートするためにも必要なので、見つからないと思います。PDB ルックアップを行わないとコード行を見つけることができませんでした。
他のヒント
参照先が VB であることを確認してください。 プロジェクト 単なる DLL ファイルではありません。
それは既知の問題です, 、回避策は次の 2 つです。使用 ctrl+,
または、この機能を追加するプラグイン(resharper など)を使用します(この機能を F12
).