При выполнении из локальной компиляции все работает нормально. Однако при развертывании на клиентском компьютере мы не включаем office.dll и Microsoft.Office.Interop.Excel.dll, так как я считаю, что нам не разрешено это делать по закону. Возвращаясь к .NET Framework 4.7.2, я считаю, что это сработало благодаря GAC, который позволял приложению находить эти DLL в установке Office на клиентском компьютере. Но теперь, в .NET 9, мы получаем исключение, сообщающее, что DLL не может быть найдена: не удалось загрузить файл или сборку «Microsoft.Office.Interop.Excel, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c». Система не может найти указанный файл.
Что я пробовал до сих пор:
- Внедрение типов взаимодействия в сборку. Я считаю, что это невозможно с C++/CLI. Поэтому вместо этого я создал проект C#, ссылающийся на пакет с помощью true, а затем сослался на эту сборку в сборке C++/CLI. Это не сработало, так как у меня были ошибки компиляции, сообщающие, что типы не определены.
- Обновление пакета Nuget. Это не сработало, так как мы по-прежнему получаем то же исключение во время выполнения (но с новым номером версии).
- Вместо этого используем ссылку COM (в Visual Studio щелкните правой кнопкой мыши проект > Добавить ссылку > COM > Библиотека объектов Microsoft Excel 16.0). Это не сработало, так как мы по-прежнему получаем подобное исключение во время выполнения ().
Код: Выделить всё
Could not load file or assembly 'Interop.Microsoft.Office.Interop.Excel.1.9, Version=1.9.0.0, Culture=neutral, PublicKeyToken=null'. The system cannot find the file specified.
Итак, есть ли способ развернуть приложение .NET 9 с помощью Excel Interop на клиентском компьютере без включения Microsoft.Office.Interop.Excel.dll в установщик?
Подробнее здесь: https://stackoverflow.com/questions/798 ... erop-excel