我们目前有一个总容量约为 22 兆的应用程序。我们当前的部署方法是将应用程序部署到我们的每个客户端服务器,并使用一个小的更新程序将所有文件复制到本地 pc(如果有新版本可用)。问题是 22 megs 花费的时间比我们希望推送更新的时间要多一些。特别是因为我们每 2 周进行一次更新。我们正在寻找缩短时间的方法。
我们最初的想法是让本地 pc 仅复制自上次部署以来已更改的 dll。我们在这方面遇到了一些麻烦,因为时间戳使得很难对文件进行准确的散列以进行比较。版本号可能工作正常,但我们必须找到一种方法来仅在代码已更改时对文件进行版本控制。
只是想知道是否有人在处理类似流程方面取得了成功或提出了建议。
最佳答案
我们在国际范围内将文件推送到我们正在远程处理的设备上。
我们的解决方案是创建一个自定义工具来执行此操作(它实际上做很多其他事情),它执行一种“增量复制”——即只推送文件中已更改的部分。
这使您不必担心文件时间戳等 - 您最终在远端得到的文件与近端文件逐字节相同,但如果实际更改的唯一内容是内部时间戳,那么很少的数据需要通过网络传输。
我们使用的算法大致基于 rsync 的工作方式 (http://samba.anu.edu.au/rsync/tech_report/),尽管我们是用 C# 从头开始编写的。
但是,在您的情况下,设置 rsync 和批处理文件以使用正确的环境/选项调用它的工作实际上可能会更简单。这里有一个 Win32 版本的 rsync:http://www.itefix.no/i2/node/10650我成功地使用了它。
关于c# - 在 .net 中智能部署 dll,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3335361/