我正在尝试生成一个足够智能的工具,以编程方式检查在不同时间在两个单独的机器上编译的相同C#代码生成的发行版本二进制文件,并得出结论,代码是相同的,同时能够获取任何代码更改(如果存在于用于生成这些二进制文件的c#代码.
我尝试过使用多种方法,但为了保持这种简短,我只会坚持最新的尝试.
我在二进制文件上使用/ text选项运行ildasm并在文本中替换匿名字段等的GUID,但是当二进制文件来自不同的pc时,我发现ILDASM / text选项生成的文本被重新排序.源自相同代码但在不同机器上通过相同设置编译的二进制文件也出现严重重新排序.任何建议如何能够控制IL的重新排序将是非常感激的?
干杯
PS:任何可靠地实现这一目标的替代策略也是最受欢迎的.
解决方法
等待Eric Lippert醒来:) – 来自@mikez评论的社区维基:
当编译器团队的主要开发人员(Eric Lippert)发言时,你应该听一听:http://ericlippert.com/2012/05/31/past-performance-is-no-guarantee-of-future-results/包含详细的解释和强烈的建议,没有这样做(可能是为了回答这个确切的问题):
Is compiling the same C# program twice guaranteed to produce the same binary output?
No.