Откройте проект, ссылающийся на «Библиотеку объектов MS-Office» на нескольких машинах разработки. - PullRequest
0 голосов
/ 02 июня 2018

Я использую два компьютера, на одном из которых установлен Office 2010, а на другом - Office 2016. Первый - мой основной ПК.

Допустим, я запустил проект на основном ПК.Если я добавлю ссылку на любой из следующих объектов:

  • Microsoft.Office.Interop.Word (Microsoft Word 14.0 Библиотека объектов).
  • Microsoft.Office.Interop.Excel (Microsoft Excel 14.0 Библиотека объектов).
  • Microsoft.Office.Interop.PowerPoint (Microsoft PowerPoint 14.0 Библиотека объектов).

.. и затем откройте проект вна втором компьютере Visual Studio автоматически выберет подходящую версию для всех из них (например, «Microsoft XXXX 16.0 Object Library») , поскольку для свойства «Embed Interop Type» установлено значение true .

Пока все хорошо, но когда я добавляю ссылку на Microsoft.Office.Core (библиотека объектов Microsoft Office 14.0), я не могу получить то же поведение, то есть когда я открываю проект на второмПК, я нахожу ссылку с той же версией (14.0), помеченную значком, указывающим, что ссылка отсутствует, и предупреждениями о том же (ссылка не может быть найдена).

Очевидно, что если я удалюссылку и замените ее на более новую версию (16.0), все работает нормально, кроме - конечно- , что я больше не смогу открыть решение на основном ПК.

Итак, мои вопросы:

  • Почему он не выбирает подходящую версию для Microsoft.Office.Core, например, что происходит с Interop.Excel, Interop.Word и т. Д.?
  • Есть ли решение для этого, такЯ могу без проблем открыть проект между двумя компьютерами?

Обратите внимание:

  • Основное внимание не уделяется запуску приложенияконечным пользователем с различными версиями Office (об этом и много раз отвечали ).Я больше обеспокоен открытием решения / проекта на дополнительном компьютере development с другой установленной версией Office.

  • В случаеэто актуально, это приложение WinForms.


Обновление:

  • Я попытался скопировать MSO.Файл DLL в локальной папке 'lib', но всякий раз, когда я добавляю его в качестве ссылки, в качестве пути ссылки отображается "C:\Windows\assembly\GAC_MSIL\Office\14.0.0.0__71e9bce111e9429c\Office.dll".Затем, независимо от того, отключаю ли я / включаю свойство Embed Interop Types, оно все равно не компилируется на вторичной машине разработки.

  • Хотя я не совсем уверен, что получу полностью Eugene's answer , это помогло мне дать идею добавить ссылки PIA на вкладку Assemblies, а не на вкладку COM, и для свойства Embed Interop Type все еще установлено значение true. Кажется, что на самом деле это работает , но я не уверен, что если не использовать ссылки на COM, могут быть какие-то недостаткиНеужели?

1 Ответ

0 голосов
/ 02 июня 2018

Необходимо скопировать сборки взаимодействия (библиотеки объектов Microsoft Word / Excel / PowerPoint / Core 14.0) в локальную папку в решении.И затем вы можете добавить их в качестве ссылок, чтобы они были доступны на обеих машинах, и вы сможете без проблем открыть проект между двумя компьютерами.

...