可重复在不同的机器上使用相同的C#源代码构建

我正在尝试生成一个足够智能的工具,以编程方式检查由在不同时间在两个单独的机器上编译的相同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/包含详细信息不做的解释和强烈建议(可能是为了回答这个确切的问题):

编译相同的C#程序两次保证产生相同的二进制输出?

没有。

我找到了一个解决方案,根据Eric Lippert在post中提到的客户最终解决的问题,可以通过将编译过程的处理器亲和性设置为01来实现。在此之后,生成的可执行文件/ dll几乎完全相同。使用了som mvid和guids。 使用文本模式在这些二进制文件上运行ILDASM并构建一个简单的散列工具来去除这些随机内容提供了这样的解决方案。 我只是为了完成而提供这个,并帮助那些可能面临这个问题的人。