这假设两台计算机都将完全相同的C#.NET项目从一台计算机复制到另一台计算机。在两台计算机上构建项目时,可执行文件是否完全相同?如果没有,那有什么区别?
我问的原因是源代码可以被验证为匹配可执行文件。这是为了向那些愿意自己构建程序的用户保证它是完全匹配的。
答案 0 :(得分:2)
没有
嗯,这是一个很容易写的博客。
构建时包含一个名为“Mvid”的GUID,以确保每个构建都不同。此外,C#编译器不保证每次运行时都写入相同的指令。但在实践中,在类似的足够环境中(对于“类似”的某些定义),我期望它。
您可以告诉您的用户,并允许他们检查差异。如果唯一的区别在于Mvid,那么它们就完成了。如果还有其他更改,那么他们需要检查IL代码的功能,以确保它与您的代码等效。 (使用像ILSpy)
这样的反编译器可以更容易如果他们是那种偏执狂,那么最好的选择可能就是每次都要从源头自己构建,并使用他们自己的构建。但我确实理解能够审核它的有用性,例如你想知道官方的TrueCrypt或比特币客户是合法的。