我用 C# 构建了一个具有以下结构的应用程序:
系统路径
-- MainApplication.EXE
-- API.dll
-- 模块
------- Module1.dll
------- Module2.dll
MainApplication.exe 引用了程序集 API.dll。它通过“Assembly.Load(dllFile)”使用程序集Module1和Module2。 文件 Module1.dll 和 Module2.dll 还需要文件 API.dll。
所以,他们需要 API.dll 位于相同的路径中,我需要将文件 API.dll 放在两个目录(SystemPath 和 Modules)中。
当我使用 Assembly.Load 加载文件 API.dll 时,我想要的是一种告诉模块文件 API.dll 位于该文件夹中的方法。
我无法使用全局程序集缓存,也无法更改此结构。
我可以做什么来解决这个问题?
最佳答案
在 MainApplication.exe.config 文件中,您可以添加 <probing> element指定加载程序集时将搜索的以分号分隔的子目录列表。例如:
<?xml version="1.0"?>
<configuration>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<probing privatePath="Modules" />
</assemblyBinding>
</runtime>
</configuration>
在您的配置中使用此内容,您将能够在 Module1 上执行 Assembly.Load 或引用;并且由于您的应用程序根目录仍然位于顶层,因此如果 Module1 执行 Assembly.Load 或引用 API.dll,它将自动从顶层目录获取它。
关于c# - 设置装配引用路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7046025/