2008-09-15 18 views
2

我絕對的事實目瞪口呆的是,MS只是無法得到它的權利導航到方法的定義,當你結合C#和VB項目在一個解決方案中。如果你試圖從VB導航到C#,它會啓動「對象瀏覽器」,如果從C#到VB,它會生成一個元數據文件。智能感知的C#和VB之間的Visual Studio 2005 - 不能定位到定義

老實說,什麼是如此複雜約不同的語言之間跳躍,特別是如果他們理應使用相同的CLR?

有誰知道這是爲什麼,或者如果有什麼解決辦法? 他們在VS 2008中是否正確?


@基思,恐怕你對你的回答可能是正確的。我真的很震驚,微軟搞得這麼糟糕。有沒有人有任何解決辦法的想法?


@Mladen Mihajlovic - 這正是我所描述的情況。自己嘗試一下;項目參考不會造成差異。

回答

2

這對兩種語言都是通用的。

  • F12在VB.Net始終把你對象瀏覽器
  • F12在C#中總是需要你的元數據定義

這是故意的機制,試圖匹配預期的行爲用於升級用戶。 C#方式爲您提供了正確的信息,但VB方式是VBA或VB6用戶期望的。

行爲在VS2008中是一樣的。

這些規則對外部項目,都應該把你的代碼,如果是在同一個解決方案。


你說得很對 - VB項目對待C#項目外部,反之亦然 - 你不能從代碼導航於一體,以其他。我已經在最新的VS2008中測試過了,這仍然是一個問題。

它也無法獲得完整的元數據。在C#代碼中添加一個方法,直到編譯C#程序集時纔會出現在VB的智能感知中。

這類似於組件如何出現在工具條,所以我的數字正常的導航到代碼功能代碼功能,以一個共同的編譯器,以及其他一切使用某種類型的反思。

只要你還在建設一個PDB,應該能夠找到這些文件,我想這不會因爲他們需要支持發佈版本了。沒有PDB查找,它找不到代碼行。

0

請確保您參考的是VB 項目而不僅僅是一個DLL文件。

0

It's a known issue,解決辦法有兩個:使用ctrl+,或使用一些插件添加這個功能,如ReSharper的(將在F12添加此功能)。