c# - 在共享文件夹中部署 Microsoft 应用程序 block

标签 c# configuration enterprise-library

我们正在创建一个共享库,它基本上是 Microsoft 应用程序 block (缓存、日志记录等)的包装器。

我正在尝试使该库可用于多个 ASP.Net 应用程序。

该库部署在共享文件夹中。

我创建了一个自定义容器,所有 ASP.net 应用程序将使用该容器来使用库中的任何服务(日志记录、缓存)等。容器使用库文件夹的位置来定位库 dll。

应用程序 block 的所有配置都在 app.config 中,该配置由应用程序 block 动态加载。

我面临的问题是,配置尝试加载应用程序 block ,假设应用程序 block Dll 存储在 GAC 中,但由于某种原因,我无法将应用程序 block 程序集放置在 GAC 中。我将它们放在与 Library Dll 相同的文件夹中。

因此,库 Dll 无法加载应用程序 block 。我认为解决此问题的一种方法是在 Machine.Config 的运行时部分中指定 CodeBase 元素。我想知道是否有更好的方法可以在配置文件中指定应用程序 block dll 的位置。

有什么想法吗?

问候,

最佳答案

在 .NET 中,您无法(轻松)在多个应用程序之间共享库,除非将它们放置在 GAC 中。

AFAIR,CodeBase 元素仅用于指向特定的 COM 组件,因此它的存在是为了支持 COM 互操作。也就是说,您可以将 .NET 库导出为 COM 组件并通过 COM 互操作引用它,但我不推荐这样做,因为这会带来性能开销和维护开销。还记得dll hell 吗?这就是该方法将引导您的地方。

如果您需要在多个应用程序之间共享程序集,则应该将它们放入 GAC 中。

否则,您将需要将它们与每个应用程序一起部署。

这些是 .NET 的唯一选项。

关于c# - 在共享文件夹中部署 Microsoft 应用程序 block ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1630029/

相关文章:

c# - 解决颠倒渲染?

c# - 在 Scala 中实现类似 LINQ 的功能

python - 获取 nosetests 配置选项

enterprise-library - EntLib IDisposable 转换

c# - 升级到 Enterprise Library 6.0 会出现 'EnterpriseLibraryContainer' 问题

c# - 如何删除xamarin wpf上的标题栏并使应用程序全屏显示

c# - 表单提交后处理刷新

html - 在不同的选项卡或弹出窗口中获取 Firexfox 开发人员工具栏

java - 源代码管理基础 Eclipse 配置

c# - 企业库日志记录应用程序 block - System.InvalidOperationException : The LogWriter is already set