Как отключить перенаправление автоматической привязки для определенной библиотеки dll

#c# #.net #.net-assembly #appdomain

#c# #.net #.net-сборка #appdomain

Вопрос:

Перенаправление с автоматической привязкой можно отключить для всего проекта с помощью следующего кода:

 <AutoGenerateBindingRedirects>false</AutoGenerateBindingRedirects>
 

Есть ли у вас какие-либо идеи, как я могу отключить автоматическое перенаправление привязки для определенного dll ?

Я пытаюсь перенести логику перенаправления из clients( *.exe | app.config amp; PS | CurrentDomain.AssemblyResolve ) в саму библиотеку классов.

Приведенная ниже схема является упрощенным решением, которое я использую.

 PSexe(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 amp; 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 ?

Комментарии:

1. У меня такая же проблема. Лучшее решение, которое я придумал до сих пор, — это создать шаг post build, который удаляет перенаправления привязок из конфигурации.

2. Вы нашли решение для этого?? Столкнулся с аналогичной проблемой.

3. @AmitKumar да, я это сделал. НАПИШИТЕ мне. позже я опубликую ответ здесь