【发布时间】:2011-04-14 10:32:25
【问题描述】:
我有一个 C# 项目,当在不同的机器上编译时会生成二进制不相等的 dll。所以我的问题是为什么生成的 dll 不同?有什么方法可以在不同的机器上生成完全相同的 dll 吗?
编辑 这是我想要做的。有多个客户端机器从服务器获取一些代码 sn-p 并编译它。 dll 编译完成后,会在客户端反复使用。如果我可以在所有机器上生成相同的 DLL,那么我可以很容易地检查 DLL 在客户端使用加密哈希是否被篡改。
由于某些原因,代码必须在客户端计算机上编译。因此,数字签名不是一种选择。
【问题讨论】:
-
为什么需要二进制相同的库?此外,如果了解所涉及的机器、操作系统、.NET 版本、使用的 IDE 或编译器的确切配置,也会很高兴。
-
您是否在启用优化的情况下进行编译?为什么需要获取二进制等效的文件?你想解决什么问题?
-
也许两个项目设置了不同的程序集信息?就像例如GUID。
-
显然机器的配置或编译设置在某些方面有所不同。他们有什么不同? .net 程序集可以包含构建版本信息 - 这是唯一的区别吗?
-
@Steven Jeuris:不同之处在于文件的开头和结尾。此外,只有少量字节不同。
标签: c# .net dll compilation