我们(偶尔!)必须为我们的产品发布热修复程序,并通过直接重新发布受影响的文件而不是使用新的安装程序来执行此操作。这个产品有很多部分,一些托管代码,一些非托管代码。
当前构建工件(exe、dll)的开发标志需要在热修复程序中提供。我们希望能够通过将它们与以前的构建进行比较来自动识别它们。一个简单的二进制diff不起作用,因为所有文件上的版本号都已更改,因为如果是构建的一部分,则用新的数字标记文件。
是否有任何工具可以进行更智能的比较并决定应包括哪些文件?我们仍然会让开发人员检查列表,这更多是为了捕获开发人员没有想到的文件,而不是相反的方式。
(注意:更改热修复/生成过程不是一个立即的选项,我们是否应该传送单个文件是另一种讨论!)
这些是我看到的选项:
在生成计算机上获取已更改文件的报告,并使用文件路径的目录结构来确定哪些dll已真正更新。不确定这是否违反了“无生成过程更改”规则。
如果你想等到构建完成之后,我建议你使用一个二进制文件diff工具,比如 http://www.romeotango.com/Downloads/FileCompReadMe.txt . 使用它,您可以返回一组diff,因此您只需要获得使用该工具忽略版本号导致的diff的脚本。您可以通过使用一个受控场景来找出版本号的显示模式,在该场景中,您知道除了版本号之外,这两个二进制文件是相同的,并注意它们之间的差异。对一些dll执行此操作,并希望有足够的模式出现,以便可以编写脚本。