【问题标题】:Multiple applications using the same DLLs多个应用程序使用相同的 DLL
【发布时间】: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 的多个副本是个问题。这就是产生最干净的依赖关系图的方法。磁盘空间很便宜。

标签: .net dll


【解决方案1】:

一个巨大的文件夹中的每个应用程序

我认为这个解决方案非常好。这很简单。然而它有一个大问题。如果您将一个 dll 更新到新版本怎么办?您将不得不更新每一个应用程序 - 所以您最终会遇到某种 dll 地狱。

广汽

您可以将 dll 放入 GAC(全局程序集缓存)中。 GAC 支持部署同一个 dll 的多个版本。另一方面,部署将更加困难。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-29
    • 2017-09-06
    • 1970-01-01
    相关资源
    最近更新 更多