从C#源文件中提取doc注释

Ste*_*eve 5 c# documentation comments visual-studio

有没有人知道任何允许你直接从.cs文件中提取注释到一些简单文本甚至剪贴板的工具?如果这样的工具也可以在方法级别工作,那就更好了.

不是在寻找像Sandcastle那样在构建时工作的东西,我正在寻找适用于单个源代码文件的东西.基本上我需要将一大块方法签名和相关的文档注释复制到文本文件中,但是我很无聊删除"///"并重新格式化这些行.我希望能够右键单击一个方法并按照"将文档复制到剪贴板"的方式设置上下文菜单项.

有这样的工具吗?

Pet*_*ter 6

我刚刚写了一个工具来做到这一点.它只是几行代码,并没有完成,但扩展非常简单(明天我可能会这样做).

结果:只需单击菜单中的提取,结果将显示在剪贴板上.

替代文字

两个非常简单的步骤:

  1. 编写一个以文件为参数的程序,从该文件中获取一些文本并将其粘贴到剪贴板.
  2. 将该程序集成到IDE中.

第1步,第1部分 主程序,获取文件,将其发送到"提取器"并将结果写入剪贴板.

class Program
{
    [STAThread] 
    static void Main(string[] args)
    {           
        if (args.Length == 0) return;
        FileInfo f = new FileInfo(args[0]);
        Extracter e = new Extracter(f.OpenText().ReadToEnd());
        Clipboard.SetText(e.GetExtractedText());
    }
}
Run Code Online (Sandbox Code Playgroud)

第1,第2部分提示符:当然使用正则表达式获取所需的所有文本模式,并返回符合要求的字符串.我已经省略了关于帖子密度的评论,因为原理很简单并且已经解释过了.

public class Extracter
    {
        private Regex re;
        // extend/adapt regex patterns for better result.
        const String RE_COMMENT_AND_NEXT_LINE= @"(?<=([\/]{3})).+";

        public string FileText { get; set; }

        public Extracter(String FileText)
        {
            this.FileText = FileText;
        }

        public String GetExtractedText() 
        {
            StringBuilder sb = new StringBuilder(String.Empty);
            re = new Regex(RE_COMMENT_AND_NEXT_LINE);
            foreach (Match match in  re.Matches(FileText))
            {
                sb.Append(match.ToString());
            }
            return sb.ToString();

        }
    }
Run Code Online (Sandbox Code Playgroud)

第2步:添加到IDE

那个IDE当然依赖,但总是很容易.查看VS2008的截图:

替代文字


kay*_*zam 4

不需要自己动手,看看cr-documentor

CR_Documentor 是 DXCore的一个插件,允许您在 Visual Studio 内的工具窗口中预览文档渲染后的样子。

它工作得很好,但我怀疑它与 Resharper 一起运行有点不稳定,所以我禁用它直到我使用它。