BindingRedirect для другого имени сборки
Вы можете использовать BindingRedirect для перенаправления YourAssembly.dll 1.1.0.0 в 1.2.0.0.
Кто-нибудь знает, возможно ли это сделать, если имена сборок отличаются.
Например
YourAssembly1.dll (v1.1) перенаправляет на YourAssembly2.dll (v2.8)
3 ответа
Если я правильно помню, я сделал это около 4 лет назад, используя событие AppDomain.AssemblyResolve. Идея состоит в том, что вы получаете запрос AssemblyName и возвращаете Assembly. В некоторых случаях я даже смог создать DynamicAssembly во время выполнения и внедрить его. Я забыл, какое влияние на это оказывает сильное именование.
Используйте ILDASM и ILASM для декомпиляции, изменения и перекомпиляции исходной сборки, чтобы она ссылалась на YourAssembly2.dll.
Мне в голову пришла идея, и я сделал пару поисков, чтобы убедиться, что это возможно. См. Возможно ли изменить манифесты сборки, кроме как путем взлома ILDASM/ILASM? и http://forums.asp.net/t/1582934.aspx/1
Это не должно быть возможно из-за того, что ваше собственное приложение имеет ссылку на YourAssembly1
,
Когда среда выполнения загружает ваше приложение, оно пытается загрузить сборку YourAssembly1.dll
(применяя зондирование и перенаправления версий) и, следовательно, не может загрузить сборку YourAssembly2
вместо.