2010-10-21 147 views
6

我在一個C#項目中,在這個項目中,我引用(使用項目引用)在vb.net中編寫的另一個類庫。在相同的解決方案中處理C#和VB.net項目

現在,當我右鍵單擊並查看類定義。它不會把我帶到vb.net項目中的確切源代碼,而是將我帶到動態生成的vb.net類的c#表示。

我已經嘗試了反向實驗,從vb.net項目開始,並引用了ac#項目,這次在右鍵單擊視圖定義時,它將我帶到代碼資源管理器,所以再次,不是原始代碼進行編輯。

如果兩個項目都是相同的語言,一切都很好。

對此有解釋嗎?可能的解決方案是允許在不同語言的項目之間輕鬆進行代碼導航?

重現:

  1. 創建一個空白的解決方案
  2. 添加AC#類庫
  3. 添加vb.net類庫
  4. 在vb.net類庫,1類 - 創建任何舊方法。 (可選)
  5. 在C#類,一個引用添加到vb.net類,例如:

    VBClassLibrary.VBClass myVBClass =新VBClassLibrary.VBClass();

現在,右鍵單擊VBCLass並選擇「轉到定義」。

注意你最終會在哪裏......

回答

7

這裏沒有什麼你在做錯的地方。這是Visual Studio設計的一個不幸的副作用。當你有兩個不同語言的項目時,它們之間的引用不像一個項目引用,而是類似於文件引用。

Project to Project引用同一種語言共享一種語言服務。因此它可以控制它的所有代碼,並且可以提供特殊的實時內容優勢。主要的是goto定義和即時智能感知。今天在Visual Studio中沒有任何設施可以允許語言服務通過參考邊界彼此通信,就像您期望的那樣。

+3

我跑到了同樣的東西。另一個惱人的副作用是

標籤信息也不會跨越IDE中的語言邊界。 – RQDQ 2010-10-21 16:26:42

0

對於「goto definiton」,您可以改爲「導航到」(ctrl + commma)

相關問題