如何修补 .NET 程序集?

2024-04-11

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

我关心的是在这些程序集之间创建补丁,并将该补丁应用到客户计算机上。

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

理想情况下,它还应该处理小的更改,例如更改项目级别的依赖项或调整源代码中的几行。它不必能够应对更大的变化,因为我很乐意在这种情况下完全替换组件。

Update:

我认为更多的背景知识可能有助于澄清我的意思。我有一个持续集成服务器来构建我的应用程序。我更改文件和程序集版本以反映我正在构建的内部版本号和版本。我本来可以采取不同的做法,但这是我喜欢的选择。

当我构建应用程序时,这会导致程序集引用发生变化,但我对此感到满意。我现在关心的是分发先前发布版本的更新。我使用 InstallShield 构建更新。 InstallShield 可用的程序集被缩减为小补丁。这些不会使更新的大小增加很多。

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

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


我建议更换您的组件。修补总是有点问题——至少与替换相比。程序集文件往往相当小,因此替换它们通常不是一个很大的任务。

通常,如果源相同,则程序集发生更改的原因通常与以下几件事之一有关。您的项目可能发生了更改,但更可能的是,程序集引用的程序集之一已更改。在这种情况下,您将需要分发整套程序集,包括引用的程序集,否则您将在客户的计算机上遇到版本控制问题和损坏。

创建新的可安装文件通常比尝试修补机器更简单、更安全。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何修补 .NET 程序集? 的相关文章

随机推荐