在不同的计算机上构建两个完全匹配的C#项目总是生成相同的可执行文件吗

时间:2014-04-11 16:11:34

标签: c# build project executable

这假设两台计算机都将完全相同的C#.NET项目从一台计算机复制到另一台计算机。在两台计算机上构建项目时,可执行文件是否完全相同?如果没有,那有什么区别?

我问的原因是源代码可以被验证为匹配可执行文件。这是为了向那些愿意自己构建程序的用户保证它是完全匹配的。

1 个答案:

答案 0 :(得分:2)

quote Eric Lippert

  

没有

     

嗯,这是一个很容易写的博客。

构建时包含一个名为“Mvid”的GUID,以确保每个构建都不同。此外,C#编译器保证每次运行时都写入相同的指令。但在实践中,在类似的足够环境中(对于“类似”的某些定义),我期望它。

您可以告诉您的用户,并允许他们检查差异。如果唯一的区别在于Mvid,那么它们就完成了。如果还有其他更改,那么他们需要检查IL代码的功能,以确保它与您的代码等效。 (使用像ILSpy

这样的反编译器可以更容易

如果他们是那种偏执狂,那么最好的选择可能就是每次都要从源头自己构建,并使用他们自己的构建。但我确实理解能够审核它的有用性,例如你想知道官方的TrueCrypt或比特币客户是合法的。