C# Excel COM плагин сборки привязки Redirect? - PullRequest
0 голосов
/ 27 января 2020

Я пишу плагин Excel COM с C# и. Net 4.8. Плагин использует Utf8JsonReader из пакета System.Text. Json. Этот пакет требует System.Memory в качестве зависимости, а Memory - System.Runtime.CompilerServices.Unsafe в качестве зависимости, поэтому Nuget установит для меня небезопасный пакет 4.0.6.0. Когда приходит время выполнения, Excel успешно загружает мой плагин MyDll, но Unsafe.dll нет. . Net Framework не прочитал MyDll.dll.config, который содержит информацию bindingRedirect, и использовал версию 4.0.4.1 из манифеста Memory.dll. Согласно fusionLog исключения. Net находит файл dll, но получает ошибку несоответствия версий.

После некоторого Google кто-то говорит, что мне нужен EXCEL.exe.config рядом с EXCEL.EXE, а не MyDll. dll.config рядом с MyDll.dll. Это сработало, но не очень хорошее решение для меня, есть ли хороший способ определить bindingRedirect для плагина dll без «взлома установки Excel»?

Манифест System.Memory.dll:

System.Memory.dll's Manifest

FusionLog исключения, а не Unsafe Dll, но та же проблема:

Exception's fusionLog

1 Ответ

0 голосов
/ 27 января 2020

Вы можете попробовать использовать событие AppDomain.AssemblyResolve . Под этим событием вы можете попробовать загрузить нужную версию сборки, которая вам нужна.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...