Почему офисная PIA не устанавливается правильно в GAC? - PullRequest
15 голосов
/ 21 февраля 2011

В настоящее время я работаю над проектом c #, где мне нужно получить доступ к Outlook. Разработка ведется на двух разных машинах, на одной из которых установлен офис, а на другой нет. Я ранее спросил, как скомпилировать мой проект для объекта outlook com, и в одном из комментариев было предложено, чтобы я скомпилировал его для основной офисной сборки взаимодействия или PIA. В моем загруженном Office 2007 PIA есть msi-файл, который должен установить несколько PIA для различных частей Office. Моя проблема в том, что, похоже, этого не происходит. На моей машине без офиса, после ввода

msiexec /i o2007pia.msi

при появлении приглашения запускается установщик Windows с окном сообщения «Пожалуйста, подождите, пока Windows настроит основные сборки взаимодействия Microsoft Office 2007. Сбор необходимой информации» вместе с индикатором выполнения на уровне около 33%, после чего он исчезает, и после чего

gacutil -l microsoft.office.interop.outlook

не дает результатов для Office 2007 (я получаю результат, который имеет версию 10.0.4504.0 и является результатом более ранней попытки установки с неправильной версией Office., Но в PIA Office 2007 используется основная версия 12.)

Я вижу пару возможных объяснений, ни в одно из которых я действительно не верю:

  • GAC не может обрабатывать несколько версий одной и той же сборки и поэтому не позволяет мне устанавливать более новую версию.

  • Почему-то я не выполняю требований . Это в основном XPsp2 и .Net 1.1 или выше, оба из которых у меня есть. В разделе требований также упоминается, что загрузка работает с Office 2007, который я не установил, но я не думаю, что это требование. Это объясняется тем, что это не указано как требование, но также и тем, что Ханс Пассант в комментарии к моему первоначальному вопросу был очень уверен, что PIA могут быть специально использованы для разработки без установки Office, поэтому не имеет смысла иметь Office в качестве обязательного условия.

Так у кого-нибудь есть идея, почему PIA Office 2007 не устанавливаются правильно, или что я мог сделать, чтобы приблизиться к ответу? Если вам нужна дополнительная информация, пожалуйста, дайте мне знать. Спасибо.

Ответы [ 2 ]

14 голосов
/ 22 февраля 2011

Я ударил это некоторое время назад, с похожим проектом.Распространяемый PIA будет устанавливать PIA только в том случае, если Office уже установлен на компьютере (что имеет смысл, но может раздражать, когда речь идет о развертывании)

Visual Studio должна устанавливать PIA Office в папку вэто собственный каталог установки - например, на моем компьютере у меня есть копия всех PIA в:

C:\Program Files (x86)\Microsoft Visual Studio 10.0\Visual Studio Tools for Office\PIA\Office14

Возможно, что они будут установлены, только если у вас есть Office на вашем компьютере во время установки VSили, возможно, в установщике VS есть опция установки для установки VSTO (Visual Studio Tools for Office).

Если ваша проблема связана только с получением сборки, работающей на компьютере разработчика, на котором нет Office, затем вы можете попробовать перезапустить установщик VS и посмотреть, есть ли у вас возможность установить VSTO, или попробовать поиск в Google и посмотреть, есть ли отдельная загрузка VSTO

В противном случае, я просто скопировал бы PIAиз этой папки в аналогичное место в другом окне разработки.

2 голосов
/ 21 февраля 2011

для первого пункта, я на 100% уверен, что GAC реализован для поддержки управления версиями тех же сборок, вы можете собрать сборку с именем myCode.dll и зарегистрировать ее версию 1.0 в GAC, а затем собрать версию 1.1. и 2.0, и добавьте оба к GAC, даже если все они имеют одинаковое имя файла, GAC сохранит оба, и каждое приложение сможет использовать правильную версию в зависимости от доступной информации о привязке сборки, в основном, каждое приложение, которое содержит ссылку до версии 1.0 все равно получает его, если не указано и не зависит от наличия более новой версии.

В конце концов, когда вы перечисляете присутствие Outlook PIA в gac, вы видите только самую последнюю доступную версию, но не все из них, но, безусловно, вы должны каким-то образом выдвинуть другую версию в GAC.

...