如何修补.NET程序集?

Chr*_*sto 4 .net c# assemblies

如果我两次编译一个C#项目,我会得到两个程序集.这些程序集不完全相同(使用二进制diff).我可以想到为什么会这样,但事实仍然是两个组件的来源是相同的.

我担心在这些程序集之间创建补丁,并在客户机器上应用补丁.

有谁知道我可以创建和应用补丁的库(最好是.NET)或工具?

理想情况下,它还应该处理小的更改,例如更改项目级别的依赖项或调整源代码中的几行.它不一定能够处理更大的更改,因为我很乐意在这种情况下完全替换程序集.

更新:

我认为更多的背景可能有助于澄清我所得到的.我有一个持续集成服务器构建我的应用程序.我更改文件和程序集版本以反映我正在构建的内部版本号和版本.我可以用不同的方式完成它,但这是我喜欢的选项.

这会导致在构建应用程序时更改程序集引用,但我很满意.我现在关注的是将更新分发给以前发布的版本.我使用InstallShield构建更新.InstallShield可用的程序集简化为小补丁.这些不会大幅增加更新的大小.

我的应用程序有一些数据文件,基本上是包含程序集的加密存档.InstallShield无权访问这些程序集或了解我的存档.它不知道如何解密和提取它.我编写了自己的补丁程序,它在先前的存档中找到已更改的文件,并用新的更新版本替换它们.基本上是搜索和替换策略.

一个存档包含近百个(并且正在增长)这些程序集,其中一些程序集包含大型数据文件作为资源.这些程序集依赖于作为应用程序一部分的程序集.它们也在持续集成构建期间编译.在构建期间不编译它们将为依赖性问题留下空间,我不愿意尝试管理它.每次创建补丁时,都会包含所有这些程序集.我现在正在寻找通过为这些程序集生成补丁来减少补丁大小的选项.

Ree*_*sey 12

我建议更换你的组件.补丁一直有点问题 - 至少与替换相比.汇编文件往往相当小,因此替换它们通常不是一项非常大的任务.

通常,如果源相同则组件发生变化的原因通常与少数事情之一有关.您的项目可能已更改,但更可能的是,程序集的一个引用程序集已更改.在这种情况下,您需要分发整套装配,包括引用的装配,否则您将在客户的机器上获得版本问题和破损.

创建新的可安装程序通常比尝试修补计算机更简单,更安全.

  • 多年来尝试在现场修补软件让我厌倦了任何修补解决方案.我们公司和我们使用的供应商都在这条路上,并且没有失败,发现它充其量只是问题.它大部分时间都有效,但是当出现问题时,纠正起来非常困难.正确的安装可以从补丁中处理所有内容非常困难,下载更新的带宽也很便宜.修补只是不值得的努力. (4认同)