Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/258.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将XML注释重新插入到自动生成的[assembly].XML文件的C#源文件树中_C#_.net_Code Generation_Xml Documentation_Ilspy - Fatal编程技术网

将XML注释重新插入到自动生成的[assembly].XML文件的C#源文件树中

将XML注释重新插入到自动生成的[assembly].XML文件的C#源文件树中,c#,.net,code-generation,xml-documentation,ilspy,C#,.net,Code Generation,Xml Documentation,Ilspy,我的处境: 因此,我上周用ILSpy将一个.NET程序集反编译为C#;从那时起,我投入了大量的人力来处理文件/项目等,以使它们再次正常工作(有很多小错误[主要是由ILSpy的代码生成过程引起的]和随机问题,我一直在修复它们)。我现在离目标只有几英寸远,终点线就在眼前 但是,瞧,我刚刚意识到所有的XML注释都丢失了 由于代码文件是使用工具(ILSpy)生成的,因此几乎每个代码文件的代码样式和格式(空格和缩进)都是相同的。我要做的是 检查5000多个类库的反编译是否违法 编写一个简单的解析器来解析代

我的处境:
因此,我上周用ILSpy将一个.NET程序集反编译为C#;从那时起,我投入了大量的人力来处理文件/项目等,以使它们再次正常工作(有很多小错误[主要是由ILSpy的代码生成过程引起的]和随机问题,我一直在修复它们)。我现在离目标只有几英寸远,终点线就在眼前


但是,瞧,我刚刚意识到所有的XML注释都丢失了 由于代码文件是使用工具(ILSpy)生成的,因此几乎每个代码文件的代码样式和格式(空格和缩进)都是相同的。我要做的是

  • 检查5000多个类库的反编译是否违法
  • 编写一个简单的解析器来解析代码文件并查找类/方法/属性定义
  • 检查我找到的内容是否与xml中的内容匹配
  • 如果一切正常,那么我会将找到的xml标记复制到它们在代码文件上的新位置,因为现在我知道了文件中定义的位置

  • 提示:为了方便字符串替换/插入,请始终从文件底部插入到文件顶部。这样,无论何时插入一行,要插入的其他行的索引都将保持不变。

    您可以使用Roslyn CTP for C#制作一个将注释重新插入源文件的工具。()Roslyn为您的C#代码创建了一个树状结构,您可以通过编程方式对其进行操作,然后将其写回文件。

    您可以使用C#解析器完成此操作。根据C#(2、3、4、5)的级别,您可以选择一个ANTLR语法作为示例。你也可以试试微软Roslyn,但它的功能还不完善;一定有人已经做了一些事情——我不可能是第一个遇到这个问题的人-/不幸的是,这些文件的格式不尽相同--同样--做了大量的修改--一些文件我必须从Reflector那里获得第二个意见,等等--许多文件我已经重新格式化,添加了区域,等等+1用于检查合法性的评论(#1),以及您在底部发布的提醒,插入自下而上的行数——而且,不久前还必须编写一个自动解析器来修复各种代码文件中的数百条警告——而整个从下到上的插入操作非常方便。哦,另一个蹩脚之处:“注意:这是一个技术预览,存在一些已知问题。虽然公共API的形状已经完成,但目前只实现了VB和C#语言的一个子集。“这真的很酷。我可能必须对此进行研究!不过,我猜格式已经消失了,可能还有现有的注释,没有?这将使它不再是一个选项。但仍然非常酷、新颖、闪亮!”