Я пишу плагин 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:
FusionLog исключения, а не Unsafe Dll, но та же проблема: