c# - 在 .net 中智能部署 dll

标签 c# .net deployment

我们目前有一个总容量约为 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/

相关文章:

c# - 将 Entity Framework 4.1 数据库迁移到 EF5 进行升级,为新安装创建新数据库

python - 如何将 flask 应用程序部署到 ubuntu

c# - ModelState.AddModelError 两次显示错误

c# - 如何记录具有完整调用堆栈的异常?

.net - 运行时可调用包装器 (RCW) 范围 - 进程域还是应用程序域?

c# - 构造函数注入(inject)的实现具有未使用的 dll 依赖项

powershell - Get-AzureService 未列出所有云服务(多个订阅)

java - Jelastic 上多应用一个数据库场景的最佳配置

c# - 检测图何时重新收敛的算法(类似于公共(public)子树?)

c# - 绑定(bind)组合框