2014-02-11 46 views
2

我在VS 2013 Pro中有一個Windows窗體解決方案,它在VB和C#中都有幾個項目。一個依賴關係是這樣的:轉到定義&查找所有引用在Visual Studio中無效

Startup Project, SP (VB) 
    Custom Controls Library, CL (C#) 
     Utils/Constants Library, UL (VB) 
    UL (again, referenced directly from SP) 

我問題是,當我去定義從SP到CL,它帶我到對象瀏覽器。當我從CL到UL定義時,它會調出元數據。但是當我從SP到UL確定時,它工作正常。此外,當我在CL中查找控件的所有引用時,它不顯示SP引用,但是當我從SP執行它時,它會在SP和CL中顯示引用。

我搜索了StackOverflow,MSDN和其他幾個論壇,並嘗試了所有我發現的建議:我已經刪除了所有引用並重建了它們(我100.0%確定它們都是項目引用,而不是文件引用) 。我已經完全刪除了我的解決方案文件並從頭開始添加項目。我已確保引用中的GUID與引用中的GUID相匹配。它們都是用相同的框架構建的,並且都是針對相同的處理器類型。所有項目都在生成pdb和xml調試文件。我假設VS2013沒有使用IntelliSense數據庫文件,因爲我無法在我的磁盤上找到它們中的任何一個來刪除(或者我會嘗試它!)。

另一個有趣的(我假設相關的)細節是CL中的方法/屬性重命名不反映在SP中。不僅SP子類的符號不被重命名,而且Visual Studio甚至在重建之前都不會提醒我這個錯誤。所以,看起來好像智能感知已經損壞,或者有其他東西丟失了。

我真的很茫然。據我記得,這個功能已經起作用了。自2012年至2013年升級以來,我無法確定它是否有效。是否有人擁有相同的經歷?我禁用了附加組件,重新構建解決方案,重新添加了項目依賴項......並且我會重新安裝Visual Studio,但如果有更簡單的方法,則不會真的想失去幾個小時的開發工作。

+0

您是否嘗試重置所有設置?工具/「導入和導出設置...」 – Martin

+0

對不起,忘了提及那...也沒有運氣。 – 404compilernotfound

+0

Do Go Def Def等工作與其他項目?你可以在另一個安裝上試用這個解我在問,因爲VS的安裝可能不是問題,而是項目。 – Martin

回答

2

目前我只有一個可用的快捷版。我用VS2013 Express試着用新創建的空項目來描述它們(即VB - > C# - > VB)。我看到您描述的所有行爲,但是 VS2012 Express顯示完全相同的行爲。

因此,我擔心重新安裝將無濟於事。

我通常使用包含多個項目的解決方案,而Go To Definition等項目可以非常流暢地工作,但我從未使用包含使用多種語言的項目的解決方案。

我猜你缺少的功能,「使用不同的.NET語言在不同的項目上順利地工作智能感知」,從未實現過。

更新: VS2010的行爲方式相同。

+0

感謝您對它進行測試!我記不起2012年是否正常工作。我將在工作中測試這個不同的解決方案(在2008年)。我的預測是我會看到相同的行爲。 – 404compilernotfound

0

我遇到了同樣的問題,試圖找到Find All Refs選項,發現它與多種語言或VS的版本無關,只是排除了文件。在解決方案資源管理器中,你可能會看到一個模糊的,星羅棋佈,文件圖標,就像我的文件CenterConverter.cs

enter image description here 而正常文件有Exclude From Project一個鼠標右鍵點擊菜單選項,點圖標源文件有一個爲Include In Project

查看排除文件的屬性,您將看到Build Action(編譯與否)和Copy To Output Directory屬性丟失。

通過在項目中包含文件,它將被編譯,像Go To DefinitionFind All References這樣的選項開始有意義。

2

最近升級到VS2013,並且可以告訴您,當您單擊定義的函數名稱時,「查找所有引用」選項用於顯示調用該函數的解決方案中的所有位置。它現在所做的就是向你展示你已經在看的那個。

在我的面前,現在我有行218:公共共享功能MyNewFunction(BYVAL測試作爲字符串)

如果我在MyNewFunction點擊右鍵,選擇「查找所有引用」輸出窗口說「查找符號結果 - 找到1個匹配項「,它與上面的函數名,文件和行號相同。 所以它是無效的。

當然,除非有一些我們還沒有看到的隱藏設置?

+0

Craig,你找到了解決辦法嗎?我昨天從VS2008遷移到VS2015,對於發現「查找所有引用」已被破壞,我感到非常驚訝和失望,完全如您所描述的那樣。我很想回到2008年! – Resource

0

我在VisualStudio 2010中遇到了類似的問題,其中「查找所有引用」命令在正常使用一段時間後消失。

使用快捷鍵會沿着「當前不可用」的方向顯示消息,嘗試「轉到定義」時會顯示錯誤對話框。

退出並重新打開Visual Studio沒有解決問題,並且找不到可能會改變情況的任何設置。

奇怪的是,這個問題只限於一個源代碼文件,而不是其他的。

出於好奇,我關閉了受影響的源代碼文件,然後通過雙擊解決方案資源管理器中的文件重新打開它,並解決了這個問題。

我最好的猜測是某些東西損壞了文件上的緩存索引,並關閉並重新打開,提示Visual Studio刷新此緩存。

相關問題