Я попал в очень грязную ситуацию.
Сценарий: У меня есть надстройка VBA для автоматизации Excel, которая вызывает библиотеку .NET 4.0 (через ExcelDna).Эта библиотека 4.0 вызывает некоторые методы в библиотеке смешанного режима 2.0.Следовательно, пришлось установить BindAsLegacyV2Runtime на 4.0 CLR.Я установил это в библиотеке 4.0, и когда Excel создает эту библиотеку, CLR загружается с этим набором атрибутов, и все работает нормально (см. ссылка ).Я не могу изменить файл excel.exe.config, поскольку он запрещен на рабочих машинах.
Я запускаю процесс Excel из командного файла и загружаю надстройку как:
Start Excel.exe my4.0addin.xla
Проблема: Обнаружено, что это не работает на нескольких пользовательских машинах, и исследовал проблемуВыясните, что Excel загружал предустановленные надстройки в машину перед тем, как загружать надстройку, переданную в качестве параметра.Следовательно, до загрузки надстройки 4.0 Excel загружал 2.0 CLR из-за некоторых других надстроек.Следовательно, атрибут не может быть установлен, и логика переходит к броску.
Я не могу изменить файл Excel.exe.config (чтобы добавить атрибут в конфигурацию) или зарегистрировать мой надстройку, так как оба требуют прав администраторапользовательские машины, и это невозможно в моей среде.
Следовательно, есть ли способ контролировать загрузку надстроек в Excel или любой другой способ заставить это работать?