Подтвердить что ты не робот

BindingRedirect для разных имен сборки

Вы можете использовать BindingRedirect для перенаправления YourAssembly.dll 1.1.0.0 на 1.2.0.0.

Кто-нибудь знает, возможно ли это сделать, если имена сборки разные.

например.

YourAssembly1.dll(v1.1) перенаправляет на YourAssembly2.dll(v2.8)

4b9b3361

Ответ 1

Если я правильно помню, я сделал это около 4 лет назад, используя AppDomain.AssemblyResolve событие. Идея состоит в том, что вы получаете запрос AssemblyName, и вы возвращаете сборку. В некоторых случаях я даже мог генерировать DynamicAssembly во время выполнения и вводить это. Я забываю, какие последствия имеет сильное именование.

Ответ 2

Это не должно быть возможным из-за того, что ваше собственное приложение имеет ссылку на YourAssembly1.

Когда среда выполнения загружает ваше приложение, она пытается загрузить сборку YourAssembly1.dll (применяя пробные и перенаправленные версии), и поэтому она не может загружать сборку YourAssembly2.

Ответ 3

Используйте ILDASM и ILASM для декомпиляции, изменения и перекомпиляции исходной сборки, чтобы она ссылалась на YourAssembly2.dll.

У меня появилась идея в моей голове и сделала пару поисков, чтобы проверить это. См. Возможно ли изменить манифесты сборки, кроме как с помощью взлома ILDASM/ILASM? и http://forums.asp.net/t/1582934.aspx/1

Ответ 4

Почему бы не использовать инфраструктуру инъекций зависимостей, такую ​​как Unity или Spring.NET, для чего-то подобного? Настройка того, какой файл для загрузки может быть выполнена довольно легко.

Или, может быть, загрузите файл YourAssembly1.dll(v1.2) и передайте его функции YourAssembly2.dll?