Могу ли я по-прежнему пользоваться Microsoft.Офис.Сборки для взаимодействия с office 2013?

StackOverflow https://stackoverflow.com//questions/21013912

Вопрос

Мне пришлось импортировать более старый проект (в .Net 2) в Visual Studio 2013, в нем используются основные сборки взаимодействия Microsoft.

Visual Studio сказала, что мне нужно добавить ссылки на проект.Теперь я пошел и немного почитал, и, по-видимому, Microsoft выпустила PIA только для office 2010?(У меня есть Office 2013)

Теперь вот что я хотел бы знать.

  1. Могу ли я заставить его работать с office 2013 и быть обратно совместимым?
  2. И если да, то является ли это хорошим маршрутом для будущего?Будет ли это совместимо?Потому что я вижу, что тебе нужно .Net 2 (самое позднее), а Windows 8 поставляется с версией 4.5, а не с версией 3 (по умолчанию), и на большинстве новых компьютеров будет установлен Office 2012 или 2013.
Это было полезно?

Решение

PIA - это исторический артефакт, необходимый только для старых версий.Сетевые версии (до версии 4).Они были тщательно и элегантно заменены функцией "Встраивать типы взаимодействия", также известной как функция "Без PIA".Поддерживается начиная с Visual Studio 2010, вы снова найдете его в окне свойств при выборе эталонной сборки.По умолчанию используется значение True.Хорошим видео, в котором рассказывается о базовой технологии, является доступно здесь.

Именно по этой причине Microsoft не публикует PIA для Office 2013, они ожидают, что вместо этого вы будете внедрять типы взаимодействия.

Эта функция очень желательна, она избавляет вашего клиента от необходимости устанавливать PIA на свой компьютер, а вас - включать их в программу установки.Решение проблемы, когда ни один из них не заботится о ней, - слишком распространенная неудача.Кроме того, PIA для Office очень велики, и большое преимущество внедрения типов взаимодействия заключается в том, что ваша сборка содержит только те типы, которые вы фактически используете.Многие мегабайты сокращены до нескольких килобайт.

Рабочий процесс немного отличается.Вместо добавления ссылки на Microsoft.Office.Interop сборки, доступные в диалоговом окне "Добавить ссылку", вкладка .NET Framework, теперь вы используете вкладку COM.И выбери, скажем, "Microsoft Excel 15.0 Object Library" чтобы сгенерировать типы взаимодействия для программы, использующей Excel.Если вы загружаете старый проект, в котором ранее использовались PIA, просто удалите эти ссылочные сборки и добавьте их обратно на вкладке COM.

Обратите внимание, что функция утеряна, поэтому намеренно настроить таргетинг на старую версию Office, которая на самом деле не установлена на вашем компьютере разработчика, сложнее.Если это требование, то вам все еще нужны PIA для этой версии, принудительно установите для типов взаимодействия Embed значение True в окне свойств.На самом деле выполнение этого сомнительно, Microsoft с трудом поддерживает полную совместимость новых версий Office со старыми версиями.Они поддерживают это в рабочем состоянии уже 15 лет, но оно выдыхается.Наихудший сценарий - это использование более новой версии, чем та, что установлена на вашем компьютере, что может привести к сбою вашей программы. очень трудно диагностируемые исключения, такие как AccessViolationException.

Обратите внимание, что вам необходимо внести небольшие изменения в свой код, чтобы он заработал.Синтетический "XxxxClass" классы не встроены, только "Xxxx- интерфейсы.Просто уберите это слово "Class" из самого новое заявление.

Другие советы

Сообщество VS 2015 с Office 365 - по какой-либо причине добавление из COM-объекта не работает.Решение заключается в том, чтобы зайти в GAC и найти сборки взаимодействия, скопировать их во временный каталог, а затем добавить в свой проект, как любую библиотеку DLL.

Кроме того, если вы еще не знаете, в Windows 8 действительно есть более старые версии .NET Framework, но они не установлены по умолчанию.Перейдите к функциям программы ---> Добавить функции в Windows ----> и первым флажком должен быть .NET 3.0 и, возможно, 2.0.Обратите внимание, что если вы находитесь на сервере WSUS, вам нужно будет указать Windows, чтобы она извлекала файлы с серверов обновления Windows.Надеюсь, это поможет!

Официально обратной совместимости PIA для Office не существует.На самом деле это работает.

По соображениям обратной совместимости я использую PIA для Office XP уже несколько лет, и он отлично работает с Office XP, 2003, 2007 и 2010 (еще не протестирован с 2013) и в Windows XP, Vista, 7 и 8.

Для совместимости с различными версиями Windows я использую .NET framework 3.5.

На будущее...это зависит от того, что вы делаете с PIA.Если возможно, гораздо лучше напрямую работать с файлами Open XML или создать надстройку для word/excel.

Я только что узнал, что Visual Studio 2013 express больше не поддерживает office.Таким образом, вам нужна, по крайней мере, pro-версия, чтобы заставить ее работать.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top