我试图获取我在VS2015的任务列表中定义的所有评论标记的列表。
我正在获取TaskList
并且我能够在调试器中看到所有评论标记,如TODO,HACK等 - 但我无法找到访问方式他们以编程方式。
DTE2 dte = (DTE2)Package.GetGlobalService(typeof(DTE));
TaskList tl = dte.ToolWindows.TaskList;
In Debugger ----------------------------------------------------------------------
TaskList tl
-- CommentTokens Count = 4
-- [0] {Microsoft.VisualStudio.ErrorListPkg.Shims.CommentTaskToken}
-- IsDefault true bool
-- Priority Normal Microsoft.VisualStudio.Shell.CommentTaskPriority
-- Text "TODO" string
-- [1] {Microsoft.VisualStudio.ErrorListPkg.Shims.CommentTaskToken}
...
TaskList.TaskItems
仅返回VS-TaskList-Window中显示的项目。
答案 0 :(得分:0)
由于TaskList
只是一个接口,您必须打开它的实现来获取CommentTokens
属性。无法找到目标类型的任何参考,但是您是否尝试在“调试”窗口中选择CommentTokens
或TaskList
并将其添加到Watch?您可以为它们找到真实的类型,然后将dte.ToolWindows.TaskList
转换为正确的类型。之后,您将能够获得CommentTokens
收藏。
建议编辑被拒绝,所以我自己添加信息:
修改:解决方案是创建dymanic
变量,使用dte.ToolWindows.TaskList
进行分配并获取CommentTokens
属性。
DTE2 dte = (DTE2)Package.GetGlobalService(typeof(DTE));
TaskList tl = dte.ToolWindows.TaskList;
dynamic commentTokens = ((dynamic)tl).CommentTokens;
// getting the token from the TaskList
foreach(dynamic token in commentTokens) {
tokens.Add(token.Text);
}