【发布时间】:2017-10-15 22:27:37
【问题描述】:
我们有大量的小型 .NET 应用程序(数百个)。其中许多应用程序使用相同的 DLL。在干净地处理 DLL 的同时部署这些应用程序的最佳方法是什么?
我们当前的解决方案使用可以组织和启动其他应用程序的“仪表板”应用程序。它从一个文件夹中获取可执行文件,从另一个文件夹中获取 DLL,然后将它们都复制到不同的文件夹中,然后从该文件夹中启动程序。这实际上工作正常,但我想知道是否有更清洁/更简单的方法?
一个建议是为每个应用程序创建一个单独的文件夹。这使事情变得井井有条,但也带来了一个明显的问题,即每个应用程序都必须拥有自己单独的 DLL 副本。
另一个建议是将所有应用程序与 DLL 一起保存在一个巨大的文件夹中。这解决了 DLL 问题,但您最终会得到数百个可执行文件、配置文件、DLL 等,所有这些都混杂在一个文件夹中。我实际上无法确定为什么这会是一件坏事,除了它看起来很乱而且没有条理。
是否有更合适/更可接受的方式来处理这种情况,还是我们只需要拼凑一些东西并随之运行?
【问题讨论】:
-
我发现每个可执行文件都有许多文件夹,所有这些文件夹都属于同一个应用程序解决方案,这更加混乱。并跟踪哪个可执行文件使用特定的 dll 正确分发新版本?似乎有很多不必要的麻烦等着发生
-
对于本机 dll,只需正确设置 PATH 即可。想要启动应用程序 X 并且 dll 在文件夹 Z 中?制作一个启动器(可以像 .bat 文件一样简单),将 Z 添加到 PATH,然后启动 X。对于托管 dll:类似,通过 app.config 或在代码中设置程序集搜索路径。
-
我不知道你为什么认为拥有同一个 DLL 的多个副本是个问题。这就是产生最干净的依赖关系图的方法。磁盘空间很便宜。