我嘗試爲Visual Studio編寫擴展,但找不到有關我的問題的文檔。在SDK示例中,僅針對文本高亮等一些內容,但沒有任何示例說明如何直接使用Intelliscense。來自MSDN的文檔 - 也不是很好。 這是可能的 - 如果我有IWpfTextView,從當前打開的源文件中獲取所有方法的列表?在Visual Studio文本編輯器擴展中獲取當前源文件方法
回答
這是可能的 - 從當前打開的源文件中獲取所有方法的列表,如果我有IWpfTextView?
您可以通過CodeElement獲取所有方法的列表,並檢查它是否爲CodeFunction對象。以下代碼供您參考。
您可以通過DTE.ActiveDocument
獲取當前打開源文件DTE2 dte = this.ServiceProvider.GetService(typeof(DTE)) as DTE2;
FileCodeModel fcm = dte.ActiveDocument.ProjectItem.FileCodeModel as FileCodeModel;
foreach (CodeElement element in fcm.CodeElements)
{
if (element is CodeNamespace)
{
CodeNamespace nsp = element as CodeNamespace;
foreach (CodeElement subElement in nsp.Children)
{
if (subElement is CodeClass)
{
CodeClass c2 = subElement as CodeClass;
foreach (CodeElement item in c2.Children)
{
if (item is CodeFunction)
{
CodeFunction cf = item as CodeFunction;
MessageBox.Show(cf.Name);
}
}
}
}
}
}
哦,非常感謝!但正如我所理解的這個方法文件必須在項目中,我們將有空,而不是FileCodeModel對象?我試圖谷歌我也可以得到FileCodeMode文件沒有得到ProjectItem(只是如果我創建\打開新文件不在項目中),但我沒有找到它。並且因爲我詢問了如何從Intelliscense獲取方法列表,因爲我認爲這對任何文件都是可能的。也許你知道如何獲取方法列表,如果文件不在項目中? :) –
作爲Sergey Aksenov之前提到的,你可以使用Roslyn來實現它。 –
正如我以前回答,羅斯林不能解決我的問題,因爲我需要獲取C/C++文件的方法 –
- 1. Visual Studio文本編輯器擴展
- 2. Visual Studio擴展:在當前解決方案中編輯代碼文件?
- 3. 擴展Visual Studio編輯器
- 4. 文本編輯器中的Visual Studio擴展圖標
- 5. 獲取文件的擴展名(編輯)
- 6. 如何在Visual Studio擴展中選取所選源文件?
- 7. Visual Studio 10文件擴展
- 8. Chrome擴展編輯源文件
- 9. 擴展Visual Studio 2010 - 用鍵盤快捷鍵替換編輯器中的文本
- 10. 如何在cpp中爲擴展項目獲取當前版本的Visual Studio?
- 11. 從wysihtml5編輯器中獲取當前選定的文本
- 12. 在資源管理器樹中打開當前編輯文件
- 13. vscode擴展從當前文件夾獲取文件
- 14. 獲取關聯的文件擴展名爲Eclipse編輯器
- 15. 獲取不帶擴展名的文件名,textmade包編輯器
- 16. 開發獲取當前forecolor的Visual Studio擴展
- 17. 在Visual Studio中編輯xaml文件的任何替代方法?
- 18. Visual Studio DTE2:如何獲取當前文檔的文本內容
- 19. Visual Studio擴展:掛在移動文件
- 20. 在Visual Studio 2012中爲Razor編輯器擴展Intellisense
- 21. 在Visual Studio 2010中擴展TFS工作項目編輯器
- 22. Visual Studio 2008 resx文件編輯器
- 23. Visual Studio文本編輯器不識別F#源代碼?
- 24. Visual Studio擴展包 - 自定義文件類型 - 編輯器和圖標
- 25. Chrome擴展取得HTML源文件沒有當前頁
- 26. 在Eclipse中獲取當前編輯文件的絕對路徑
- 27. Visual Studio:如何使用WPF編寫擴展編輯器
- 28. 如何從Visual Studio擴展中獲取當前正在運行的項目
- 29. 將元素添加到Visual Studio擴展中的編輯器
- 30. 有沒有在文本編輯器中覆蓋文件名的擴展名?
見https://stackoverflow.com/questions/23869722/get-semantic-model-from-a-classifier-vsix和https: //vlasovstudio.com/visual-commander/commands.html#CreateTypedVariable –
如果我將使用Rolsyn,我可能會只爲C#和VBasic獲取方法,對吧? –
是的,Roslyn只支持C#和VB。 –