Visual Studio -- 获取任务列表的评论标记

Visual Studio -- get comment tokens of Task list

我正在尝试获取我在 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 仅 returns VS-TaskList 中显示的项目-Window.

由于 TaskList 只是一个接口,您必须解包它的实现才能获得 CommentTokens 属性。找不到目标类型的任何参考,但您是否尝试在 Debug window 中 select CommentTokensTaskList 并将它们添加到 Watch?您可以为它们找到一个真实类型,然后将 dte.ToolWindows.TaskList 转换为正确的类型。之后你将能够获得 CommentTokens collection.

建议编辑被拒绝,所以我自己添加信息:

编辑:解决方案是创建一个 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);
}