强制项目从当前目录加载 DLL



我正在尝试通过强制它加载并使用当前目录中的DLL而不是Windows目录来制作一个在每个操作系统上运行的程序,但它不起作用。我尝试启用"复制本地"并更改引用路径,但没有任何成功,程序尝试从 windows 目录加载 DLL。我的问题是:我该如何解决这个问题?

DLL 的搜索顺序记录在 MSDN 上。它还包括有关如何修改搜索顺序的说明,以便首先搜索本地 bin 目录,而不是 GAC。

目录%windir%assembly称为 GAC。 程序集不会复制到那里,而是通常使用 gacutil /i 或安装包进行安装。

GAC 是一个合适的文件夹,适用于未集中协调的构建版本中的许多其他库和应用程序引用的库。 使用 GAC 可以拥有同一库的多个版本,即使单个应用程序在系统上并行安装,也可能间接需要所有这些版本。 一个典型的例子是.NET框架本身。

您生成的程序集可能不是那种。 基本上属于单个应用程序的应用程序程序集和库永远不应进入 GAC,否则可能会遇到麻烦。 有各种可能的麻烦:

  • 一个意外或故意创建具有相同版本号的同一库的不同(不兼容)版本。
  • GAC 中的程序集引用不在 GAC 中的程序集
  • 一个应用将同一程序集安装到 GAC 中,但另一个应用希望从其本地文件夹(应用程序二进制文件所在的位置)加载它。

加载程序集时,GAC 中的代码将获得首选项。 要从 GAC 中删除程序集,请使用 gacutil /u

最新更新