首页 > 解决方案 > 如何禁用特定 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. 这很容易 - 我只需要设置AutoGenerateBindingRedirectsfalse编写一个自定义解析逻辑,如下所示:

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

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

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

标签: c#.net.net-assemblyappdomain

解决方案


推荐阅读