C# 如何修补或更新已编译的应用程序?

C# 如何修补或更新已编译的应用程序?,c#,.net,compilation,patch,C#,.net,Compilation,Patch,您能否帮助理解补丁或更新在代码级别上如何应用于已编译和实时应用程序 我的意思是,如果我们想修复某段代码中的错误(或改进功能),那么已经编译的代码会发生什么,它是如何更改的?您所说的是用二进制diff算法完成的 这样的算法可以发现现有二进制文件和目标二进制文件之间的差异。这通常比再次发送整个文件的空间小得多,因此速度更快。如果您推送的更新与安全相关,则速度是相关的,因为客户机修补得越快,漏洞利用的机会就越少 有关已编译可执行文件的最新和最好的二进制差异算法实现,请参阅和。最有可能的情况是,您只需将

您能否帮助理解补丁或更新在代码级别上如何应用于已编译和实时应用程序


我的意思是,如果我们想修复某段代码中的错误(或改进功能),那么已经编译的代码会发生什么,它是如何更改的?

您所说的是用二进制diff算法完成的

这样的算法可以发现现有二进制文件和目标二进制文件之间的差异。这通常比再次发送整个文件的空间小得多,因此速度更快。如果您推送的更新与安全相关,则速度是相关的,因为客户机修补得越快,漏洞利用的机会就越少


有关已编译可执行文件的最新和最好的二进制差异算法实现,请参阅和。

最有可能的情况是,您只需将二进制文件替换为新的已编译版本,并确保它们仍然适用于所有相关库。

您为什么认为正在使用修补程序?你说的是ASP.NET卷影程序集吗?现在已经很少有补丁在使用了;带宽和媒体是如此便宜,它更容易简单地重新分配新的组件。一个值得注意的例外是那些巨大的打包游戏数据/媒体文件。@Aaronaught:对于安全更新来说,这是相关的。@nobugz我说的很笼统,老实说,我不太理解你的问题(由于不太了解修补、更新或更改已编译代码的机制。如果只是替换二进制文件,那么我得到了它)@Vinko Vrsalovic,请您具体说明,在更新时出于安全考虑,您的意思是什么?感谢您提供的详细信息,+1。所有这些可以总结如下:一般来说,更新应用程序的常见做法只是替换可执行文件,但有时会替换某些人(例如谷歌)使用更高级的方法查找和替换仅不同的部分代码?是,但替换不是“部分代码”,它是二进制文件的一部分。此外,正如Aaronaught所说,游戏发行商通常以这种方式分发补丁,Adobe IIRC也是如此。因此,它比你想象的更为常见。特别是当你有大量数据和/或大量客户端要推送你的更新时。谢谢Thomas,+1。因此,如果我分发了某个应用程序的Service Pack,我t的大小为1GB,这并不意味着所有这些1GB的大小都有变化,只是这是以前安装的整个可执行文件的另一个副本,只包含一些变化?这取决于应用程序,但很可能是这样。通常可执行文件没有1GA,因此service pack只能替换relevant库和可能的可执行文件,它可能仍然比所有资源的应用程序大小小得多。