Asssembly.LoadFrom не удается при вызове через Excel 2007 - PullRequest
2 голосов
/ 29 июня 2011

У меня есть класс .NET 4.0, который использует Assembly.LoadFrom для загрузки сборки .NET 3.5 в смешанном режиме.Когда этот класс вызывается из приложения .NET 4.0 (с параметром useLegacyV2RuntimeActivationPolicy = "true", указанным в файле конфигурации), все работает нормально.

Однако этот класс также виден COM, и когда я затем вызываю егоиз Excel 2007 (опять же, Excel.exe.config указывает useLegacyV2RuntimeActivationPolicy = "true") Я получаю исключение FileLoadException:

Не удалось загрузить файл или сборку 'Foo ...' или одну из ее зависимостей.Не удалось загрузить среду выполнения.(Исключение из HRESULT: 0x80131700)

Внутреннее исключение - System.Runtime.InteropServices.COMException: Не удалось загрузить среду выполнения.(Исключение из HRESULT: 0x80131700)

Я не получаю эту проблему при вызове из Excel 2003, Excel 2010 или vbscript.Может кто-нибудь объяснить, что происходит и как я могу это исправить?

1 Ответ

2 голосов
/ 27 июля 2011

Я обнаружил в Microsoft, что это известная проблема с Excel 2007. Эта проблема была решена в Excel 2010, и проблема не будет устранена в Excel 2007.

Обходной путь - принудительное решениеExcel для использования .NET 2.0 типа COM перед использованием класса .NET 4.0.Я сделал это, добавив ссылку на версию .NET 2.0 файла mscorlib.tlb, а затем добавив следующий код VBA перед вызовом класса .NET 4.0:

Dim o as mscorlib.Object
Set o = New mscorlib.Object

Надеюсь, что это окажется полезным для всех, кто запинаетсячерез эту неясную проблему!

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