如何以编程方式将文档从.xml文件导入到.cs文件?

时间:2019-01-16 15:23:22

标签: c# visual-studio documentation

我看到.xml文件中的文档如下:

<?xml version="1.0"?>
<doc>
    <assembly>
        <name>ClassLibrary2</name>
    </assembly>
    <members>
        <member name="T:ClassLibrary2.Class1">
            <summary>
            Class1 Dummy documentation
            </summary>
        </member>
        <member name="M:ClassLibrary2.Class1.Func1">
            <summary>
            Func1 Dummy documentation
            </summary>
        </member>
    </members>
</doc>

我不会将文档导入如下所示的.cs文件:

namespace ClassLibrary2
{
    public class Class1
    {
        void Func1()
        {

        }
    }
}

这样,在导入后我的文件将如下所示:

namespace ClassLibrary2
{
    /// <summary>
    /// Class1 Dummy documentation
    /// </summary>
    public class Class1
    {
        /// <summary>
        /// Func1 Dummy documentation
        /// </summary>
        void Func1()
        {

        }
    }
}

我该如何以编程方式执行此操作?

我应该使用CodeDOM还是Visual Studio?还是Roslyn或其他工具?

我们将不胜感激

谢谢。

1 个答案:

答案 0 :(得分:0)

使用CodeDom,罗斯林是编译器平台,不会对您的问题有所帮助。

  1. 将cs加载到码域图中
  2. 在图中找到方法/属性并添加CodeCommentStatement-请参见https://docs.microsoft.com/en-us/dotnet/framework/reflection-and-codedom/how-to-create-an-xml-documentation-file-using-codedom
  3. 从图形生成新的源文件(示例在我提供的链接中)

编辑: 也许使用roslyn的Microsoft.CodeAnalysis库(添加Microsoft.CodeAnalysis.CSharp nuget包)会更容易

var syntaxTree= CSharpSyntaxTree.ParseText(code);

//search for the methods and properties and add comments
// ** your code **
//

//getting the  new sourcecode
var root = (CompilationUnitSyntax)syntaxTree.GetRoot();
var mc= new ModelCollector();
mc.Visit(root);

string newCode = JsonConvert.SerializeObject(mc.models);

以下是创建新评论的方法: https://docs.microsoft.com/en-us/dotnet/api/microsoft.codeanalysis.csharp.syntaxfactory.comment?view=roslyn-dotnet

lib的完整文档: https://docs.microsoft.com/en-us/dotnet/api/microsoft.codeanalysis.csharp?view=roslyn-dotnet