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 вместо.

Другие вопросы по тегам