【问题标题】:Check to see if a compiled dll has changed?检查编译的dll是否发生了变化?
【发布时间】:2011-04-29 19:22:11
【问题描述】:

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

【问题讨论】:

  • 为什么不实现由构建服务器完成的自动版本控制,以消除人们忘记设置版本的风险?
  • Anna 是不是意味着每次您进行构建时每个文件都会是一个新版本,因为在我们的设置中所有内容都已构建?如果那是真的,那当然行不通。
  • @user127954 点。您还可以改进您的构建环境以仅构建您需要的内容并使用已知版本的依赖项?

标签: .net deployment


【解决方案1】:

我最近被要求做一个类似的任务,我使用了Reflector Diff AddIn

【讨论】:

    【解决方案2】:

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

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

    我建议您自动化构建过程并在每次构建时自动增加 assemblyinfo.cs 中的版本字符串。如果您使用源代码控制,您的构建脚本可以将其检出、递增并重新检入。

    希望这会有所帮助。

    【讨论】:

    • 我想我只是希望有一些实用程序可以做到这一点,但也许不会。我想我们只需要要求开发人员更新版本号并继续使用。自动化构建部分真的不是一个解决方案,除非它真的很聪明并且确切地知道发生了什么变化以及它需要编译什么。我知道这样做的唯一方法是为每个 dll/exec 创建一个不同的构建脚本,然后你需要构建的东西的顺序会被拍摄,因为它们会随机排队
    【解决方案3】:

    您可能有一个增量版本号,该版本号包含在您的 dll 的某些版本字符串中。您是否尝试过对您的 dll 进行比较?如果是这种情况,您可以动态“屏蔽”版本字符串以计算您的 md5 哈希值。

    【讨论】:

      猜你喜欢
      • 2023-04-01
      • 2013-06-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-08
      • 1970-01-01
      • 1970-01-01
      • 2012-08-18
      相关资源
      最近更新 更多