我尝试为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。 –