Использование.NET 4.0 DLL в Unity3d через COM/SxS?
В попытке упростить мою проблему, я постараюсь сократить ее:
Я использую Pro версию Unity, и у меня есть 2 DLL:
- Сборка.NET 3.5 (выступающая в роли COM-клиента)
- Сборка.NET 4.0 (с интерфейсом, доступным через COM)
3.5 использует COM для работы с 4.0. Использование сборки 3.5 в приложении Windows работает нормально, она загружает 4.0 dll, используя SxS через Type.GetTypeFromCLSID() или Type.GetTypeFromProgID() (что я подтвердил с помощью SxStrace), и может использовать его функциональность просто отлично. (Приложение Windows упоминает, что это зависимость от 4.0 DLL через манифест, я не регистрирую COM DLL.)
Я пытаюсь использовать.NET 4.0 DLL в Unity. Очевидно, что я не могу использовать его напрямую, поскольку текущий вариант Mono, который использует Unity, поддерживает только до 3.5, поэтому я создал сборку 3.5, чтобы быть моим посредником. Я могу использовать сборку 3.5 в единстве, но любой из методов Type, которые я упоминал ранее, генерирует NotImplementedException(s), так как очевидно, что они не поддерживаются Unity (или, скорее, Mono), поэтому я нахожусь в потеря.
Есть идеи?
1 ответ
Хотя этот вопрос был задан 1 год назад. К сожалению, тактика посредников по-прежнему не работает, невозможно использовать библиотеки.NET 4.0 в Unity3D, поскольку Mono просто не поддерживает зависимости. Вы можете попытаться удалить любые зависимости 4.0 из dll и скомпилировать их как 3.5, если это возможно для вас.