检查已编译的dll是否已更改?

时间:2011-04-29 19:22:11

标签: .net deployment

我们正试图找出一种方法来查看用户PC上的dll是否与部署服务器不同。我们不能使用时间戳,因为我们的构建脚本每次构建所有内容(这是我们想要保留它的方式)。我们也不愿意使用版本#,因为我们绝对可以看到人们忘记了很多。我们的一些dll一直在变化(每周至少几次)。我尝试使用每个文件的MD5哈希创建一个XML文件,但显然这不起作用,因为即使没有更改,每次编译时哈希都会更改。还有其他办法吗?

3 个答案:

答案 0 :(得分:1)

我最近被要求执行类似的任务,我使用了Reflector Diff AddIn

答案 1 :(得分:0)

由于DLL会产生不同的哈希值,因此很明显每次编译都会发生变化。也许内部的东西是时间戳驱动的或随机的。

理论上,它可能使用反射或ildasm以及结果的一些智能比较,但这比修改使用递增版本字符串的过程要困难得多。

我建议你自动化你的构建过程,并在每个构建中自动增加assemblyinfo.cs中的版本字符串。如果您正在使用源代码管理,那么您的构建脚本可以将其检出,递增并重新检入。

希望这会有所帮助。

答案 2 :(得分:0)

您可能有一个增量内部版本号,它包含在您的dll的某个版本字符串中。你有没有试过在你的dll上做差异?如果是这种情况,您可以动态“屏蔽”版本字符串,以计算您的md5哈希。

相关问题