У меня есть проект VS 2005 C #, который использует специальную папку плагинов для загрузки дополнительных библиотек DLL (для использования в качестве узлов в процессе преобразования активов).
У меня есть смесь библиотек C # и C ++ в этой папке.
Проблема, с которой я столкнулся, заключается в том, что при включенном теневом копировании библиотеки DLL C ++ отказываются загружаться с использованием Assembly.LoadFrom. Я попытался создать собственный домен приложения и использовал Load, но это также не удалось.
Наконец, я попытался прочитать DLL в виде данных byte [] и использовать Load для этого - опять же, только DLL C # будут работать таким образом, с ошибкой "Дополнительная информация: непроверяемый код не прошел проверку политики. (Исключение из HRESULT : 0x80131402) ".
Статья в сети побудила меня попытаться использовать / clr: safe при сборке этой конкретной DLL, но потом ее просто не удалось собрать из-за тысяч ошибок в коде Microsoft ... (очевидно)
При отключенном теневом копировании LoadFrom отлично работает для всех библиотек DLL. Само приложение является плагином для Maya, и раньше оно работало с Maya 8.5, но не работало с 2008/2009 (если включено теневое копирование).
Мы действительно предпочли бы использовать теневое копирование, потому что оно предотвращает блокировки файлов DLL при запуске приложения (папка плагинов хранится в месте, которое Perforce может обновить во время работы приложения).
Есть какие-нибудь идеи относительно того, как я могу убедить Shadow Copying работать с пользовательской папкой И миксом C # / C ++ DLL без этих проблем?