Почему офис PIA не установлен правильно для ПКК?

В настоящее время я работаю над проектом С#, где мне нужно получить доступ к Outlook. Разработка выполняется на двух разных машинах, одна из которых имеет офис, установленный, а один из которых не работает. Ранее я задавал вопрос о том, как скомпилировать мой проект с объектом outlook com, и один из комментариев, предложенных мной для сборки первичной межсетевой сборки Office или 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., но Office 2007 PIA имеют основную версию 12.)

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

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

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

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

Ответы

Ответ 1

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

Visual Studio должна установить Office PIA в папку под своим собственным каталогом установки - например, на моей машине у меня есть копия всех 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 из этой папки в другое место в другом блоке Dev.

Ответ 2

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

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