Visual Studio - 获取任务列表的注释标记

时间:2016-03-15 23:11:08

标签: c# visual-studio-2015 envdte

我试图获取我在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中显示的项目。

1 个答案:

答案 0 :(得分:0)

由于TaskList只是一个接口,您必须打开它的实现来获取CommentTokens属性。无法找到目标类型的任何参考,但是您是否尝试在“调试”窗口中选择CommentTokensTaskList并将其添加到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);
}