我遇到以下情况:我有一个 Windows 服务,它使用 Microsoft AddIn Framework 将许多外部 .dll 作为 AddIn 加载。每个 AddIn .dll 都位于“AddIns”目录内各自的目录中,该目录位于包含服务 exe 的目录中。每个 AddIn .dll 都引用一个公共程序集,该程序集基本上是 AddIn 的 API。我把它放在服务目录中。我遇到的问题是 API .dll 也必须位于每个 AddIn 目录中,否则我会收到错误:
调用目标已引发异常。- System.IO.FileNotFoundException:无法加载文件或程序集“OSAE.API,Version=1.0.0.0,Culture=neutral,PublicKeyToken=null”或其依赖项之一。该系统找不到指定的文件。
我还尝试将此程序集添加到 GAC 中,该程序集似乎将其放在C:\Windows\Microsoft.NET\assembly\GAC_MSIL\OSAE.API\v4.0_1.0.0.0__f47a6446f36f79f7,但这似乎没有帮助。
我怎样才能告诉插件在特定目录中查找程序集或将其设置在可以全局访问的位置?
使用程序集绑定日志查看器(Fuslogvw.exe) 查看运行时尝试加载的内容以及失败的位置。
程序集绑定日志查看器显示程序集绑定的详细信息。此信息可帮助您诊断 .NET Framework 在运行时无法找到程序集的原因。这些失败通常是由于程序集部署到错误位置、本机映像不再有效或者版本号或区域性不匹配造成的。公共语言运行时无法定位程序集通常在应用程序中显示为 TypeLoadException。
(强调我的)