微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何禁用特定 dll 的自动绑定重定向

如何解决如何禁用特定 dll 的自动绑定重定向

可以通过以下代码为整个项目禁用自动绑定重定向

<AutoGenerateBindingRedirects>false</AutoGenerateBindingRedirects>

您知道如何为特定的 dll 禁用自动绑定重定向吗?

我正在尝试将重定向逻辑从客户端 (*.exe | app.config & PS | CurrentDomain.AssemblyResolve) 移动到类库本身。

下面的架构是我使用的简化解决方案。

PS\exe(client) --> adapters.dll
                     | --> adapter.V1.dll   --> third.party.V1.dll (assembly_name: third.party v1)
                     |
                     | --> adapter.V2.dll   --> third.party.V2.dll (assembly_name: third.party v2)
                     |
                     | --> adapter.V3.dll   --> third.party.V2.dll (assembly_name: third.party v3)

重要的是我无法访问 third.party.dll。并且所有版本之间的程序集名称都相同。我只是更改了那些 dlls文件名,以便将它们保存在一个文件夹中。 我一直在使用 *.exe | app.config & PS | CurrentDomain.AssemblyResolve 重定向逻辑。但我会说这不是很方便。我有很多不同的客户端,不想每次都更新 app.config 文件。所以这就是为什么我需要将重定向逻辑从客户端移动到 adapters.dll。这很简单 - 我只需要将 AutoGenerateBindingRedirects 设置为 false 并编写如下自定义解析逻辑:

AppDomain.CurrentDomain.AssemblyResolve += CurrentDomain_AssemblyResolve;
private static Assembly CurrentDomain_AssemblyResolve(object sender,ResolveEventArgs args)
{
    //...redirecting logic
}

但关键是我不想为整个项目禁用 AutoGenerateBindingRedirects,因为其他一些程序集可能需要自动解析。

您知道如何为特定的 dll 禁用自动绑定重定向吗?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。