2012-06-07 37 views
0

我想爲Visual Studio 2010編寫一個編輯器擴展。 在我的擴展中,我想要獲取有關當前處於當前光標位置。例如,如果我在一個事件處理程序中,並且我有一些使用MessageBox.show(...)顯示MessageBox的代碼,並且插入符號是.Show,我想查詢VS服務以獲取響應告訴我,我的脫字符號是在System.Windows.Froms.dll 4.0.40319版本中的MessageBox類的Show方法中。在Visual Studio Editor Extension中查詢語言服務以獲取程序集,類和方法信息

是否有可能?

回答

1

在Visual Studio 2010中無法使用當前的API來執行此操作。這就是爲什麼我們要構建Roslyn API的原因。當你安裝CTP時,我們設置一個Roslyn實例,用Roslyn代替標準語言服務,你可以直接向你提問。

如果你不要想要依賴在Roslyn實例中運行(我認爲是這樣),那麼它會變得有點棘手。你可以調用解析器來理解你在名爲MessageBox.Show的調用中,但是爲了獲得你想要建立的語義編譯,確保你正確地獲得了所有的項目引用和源文件。這是一個非常棘手的主張,所以根據你的情況,你可能會盡可能地「欺騙」。

披露:我在Roslyn團隊。

相關問題