【问题标题】:Load dll from absolute path从绝对路径加载dll
【发布时间】:2015-12-24 00:48:42
【问题描述】:

我有一个自定义 dll:

C:\自定义库\Custom.dll

我有一个引用这个库的 c# 项目。

我希望引用是绝对的;并且本地副本是错误的。

我已将引用类型更改为本地副本 false。

当我运行我的应用程序时,它将无法运行 - 这很明显,因为我的应用程序不知道在哪里寻找以解决丢失的 dll。

如何让我的应用程序在 C:\Custom Libraries 中搜索我的 dll?

到目前为止,如果目录仍然相对于我的应用程序基目录,我只能找到更改搜索路径的方法...

由于这个 dll 用于多个项目 - 我不希望每个应用程序有多个本地版本。

【问题讨论】:

  • 使用probing?
  • 我认为探测只适用于相对目录:msdn.microsoft.com/en-us/library/4191fzwb(v=vs.110).aspx
  • 您没有将其加载到 GAC 的任何原因?
  • 另外,您的 Custom.dll 架构是否与 C# 应用程序的架构相匹配?例如,一个 64 位应用程序完全无法加载 32 位 DLL,反之亦然。
  • 这不是架构问题,因为它适用于本地副本。如果可以提供帮助,我宁愿不将它安装到 GAC,因为我可能会遇到 IT 问题。

标签: c# dll


【解决方案1】:

您可以在运行时使用反射,就像 Dark Falcon demonstrates here

使用本地副本本质上没有什么不正确的。

另一种尝试是将您的 *.dll 存储在全局程序集缓存中。

【讨论】:

  • 如果我使用 Dark Falcons 方法将意味着重写。另外,这将意味着牺牲 c# 的智能感知。我认为不使用本地副本没有任何优势——我仍然希望避免使用。
  • 您可以考虑使用带有 xcopy 命令的构建后事件。这样您就可以自定义 *.dll 的存储位置。但即便如此,我也会允许本地复制......我无法想象为什么会有问题。祝你好运!
猜你喜欢
  • 2011-02-28
  • 1970-01-01
  • 2014-01-04
  • 1970-01-01
  • 2019-11-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多