.net - DotNet 中的补丁开发

标签 .net deployment patch

当我们在 .NET 中开发应用程序时,我们还会在开发结束时创 build 置并将设置发送给客户端。客户端安装安装文件。

当我们更改代码或在应用程序中添加新功能时,我们会再次创建安装程序并返回客户端以再次安装。在这种情况下,如果安装文件变得很大,有没有像补丁一样的方法,当我们更改代码时,我们只需创建一个补丁并将该补丁提供给客户端?

客户端将安装该补丁以获取更改,并且应用程序中以前的功能将保持不变。那么我如何才能在补丁的帮助下向客户端提供唯一新添加的功能或仅更改应用程序中的部分内容。

请详细帮助实现此类设置开发的所有步骤,因为它的重量非常轻。

谢谢

最佳答案

一种简单的方法(特别是当您对程序集进行代码签名或混淆时)是将应用程序分解为许多单独的程序集 (dll)。那么如果你更新代码,你只需要部署实际改变的程序集即可。

最重要的是控制依赖关系:一开始就定义好程序集之间的接口(interface),并添加新接口(interface)来扩展现有功能(而不是对现有接口(interface)进行“破坏性更改”),这样您就可以对应用程序进行有用的更改,而无需在补丁中部署大量程序集。 (如果有很多依赖项,您会发现在任何地方进行更改仍然需要您将几乎所有程序集部署给客户,这在某种程度上违背了目的)。

这种方法不会提供尽可能紧凑的补丁,但它非常简单且易于实现 - 并且在许多情况下它可以提供“可接受的小”补丁。它还鼓励开发人员认真考虑使用具有最小依赖性的良好模块化设计 - 因此即使您在顶部添加更复杂的修补机制,它也是值得做的(在合理范围内)。

如果使用补丁方法,我还建议定期向客户提供完整版本,因为应用的补丁越多,出现不同步的风险就越大。 (考虑一下 Windows 更新的工作方式 - 操作系统通过补丁进行增量更新,但微软时不时地发布一个服务包,将所有小补丁合并为一个大补丁,并且很少会发布全新版本的操作系统用户必须从头开始重新安装)

关于.net - DotNet 中的补丁开发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4767049/

相关文章:

git - 管道 git diff 到 git apply

c# - 如何在 Windows 中以编程方式获取电源使用情况

azure - 如何使用 git 将 Orchard CMS 和自定义模块部署到 Azure 网站和存储?

patch - 我如何在 AccuRev 中获取补丁文件?

deployment - 选择特定的java版本

deployment - 如何在开发人员之间划分 NSIS 脚本?

oracle - 如何检查Oracle补丁是否安装?

c# - 如何测试线程是否持有 C# 中的对象锁?

.net - WCF:如何检测到 WCF PerSession 服务的新连接?

c# - 在我的方法中有一个 block 是什么意思?