c# - 设置装配引用路径

标签 c# reflection assemblies

我用 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/

相关文章:

c# - 如何在派生类中调用基类构造函数?

java - 如何使用反射来调用带有原始参数的方法?

reflection - 尚不支持左侧为空的 Kotlin 类文字?

function - 在 PowerShell 中查看嵌套私有(private)函数定义

namespaces - 引用和使用 JScript.NET "functions only"exe 程序集

.net - 在Visual Studio 2008中使用特定版本引用

c# - 回调 UI 线程时尽量避免异常

c# - 与实例化 Web 引用代理类相关的开销是多少?

c# - C#中如何判断一个控件是否允许透明?

.net - 我似乎无法理解这个 .NET 程序集签名的事情