如何解决如何禁用特定 dll 的自动绑定重定向
<AutoGenerateBindingRedirects>false</AutoGenerateBindingRedirects>
我正在尝试将重定向逻辑从客户端 (*.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
,因为其他一些程序集可能需要自动解析。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。