Подтвердить что ты не робот

Инструменты VSTO: обновление Office 2010 до 2013 года

Я работаю над проектом инструментов VSTO для Excel. Я сейчас в процессе модернизации моей машины. Мой "старый" ноутбук работал под управлением Windows 7 x64 с Office 2010 и Visual Studio 2012. Моя новая машина оснащена Windows 8 x64 с Office 2013 и Visual Studio 2012.

При открытии моего решения на VS2012 на новом компьютере это вызывает ошибку при загрузке проекта:

Невозможно создать проект, потому что приложение, связанное с этим тип проекта не установлен на этом компьютере. Вы должны установить Приложение Microsoft Office, связанное с этим проектом тип.

Я считаю, что это связано с обновлением Office. Я не хочу возвращаться в Office 2010, если это действительно необходимо.

Есть ли у вас какие-либо предложения?

С уважением, jpsfs

4b9b3361

Ответ 1

Мое решение

Итак, после того, как я много ударил головой о стену - выяснение свойств, условий и проектов msbuild не работает для/в разделе ProjectExtensions, я выяснил дополнительный хак, который делает мой. csproj работает в Visual Studio 2013 [обновление 3], установлен ли разработчик Office 2010 или Office 2013 (он подробно описан во втором пункте ниже - который не требуется для того же поведения в VS 2010, YMMV для VS 2012).

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

  • Рука отредактируйте файл .csproj и найдите все ссылки на сборку межсетевых взаимодействий - убедитесь, что версия установлена ​​на версию "14.0.0.0" (в отличие от "15.0.0.0" ) и что "SpecificVersion" дочерний элемент присутствует и установлен в "False".

  • В проекте Project\ProjectExtensions\VisualStudio\FlavorProperties\ProjectProperties найдите пару атрибут/значение "OfficeVersion" и удалите его (так что атрибут, который читает OfficeVersion="14.0" - удаляет это). - Оставьте все остальные 14.0s неповрежденными, если что-то изменилось до 15.0, верните его обратно до 14.0 (и снова, если это ссылка, установите SpecificVersion в false). - Не беспокойтесь о смене GUID, просто оставьте их такими, какие они есть!

  • На этом этапе решение откроется и скомпилируется на компьютерах, на которых запущена Visual Studio 2013, есть ли у них Office 2010 или Office 2013. - Но он не запустит решение на машинах, работающих в Office 2013. Чтобы исправить что:

    • Откройте regedit и перейдите в HKLM\Software\Microsoft\Office\
    • Экспортировать всю ветку 15.0 в файл .reg.
    • Откройте файл в блокноте и измените все вхождения в реестре "15.0" на "14.0".
    • Перезагрузите файл (убедитесь, что вы сохранили его как unicode).
    • Импортировать файл и перезапустить Visual Studio. - Это позволит вам начать с отладки с Office 2013.

Еще одна вещь, о которой нужно помнить - особенно если вы используете EmbedInteropTypes, убедитесь, что когда вы создаете свою сборку выпуска/публикации, которую вы делаете с компьютера с Office 2010 (а не 2013), чтобы опубликовать сборка построена на основе конкретных библиотек Office 2010. - Это будет означать, что у вас есть обратная и прямая совместимость между двумя версиями.

Снова, это сработало для меня для надстройки Word - для YMMV надстройки Excel.

Оригинальный "Ответ" (может содержать полезные сведения для других)

Я упомянул выше в комментариях, что у меня противоположная проблема - VS 2013 Update 3 принудительно обновляет мои проекты, если у пользователя установлен Office 2013.

Вы можете попробовать установить VS 2013 Update 3 (даже временно, скажем, в виртуальной машине) и последнюю версию VSTO 2012/2013, а также открыть проект, и он должен также обновить вашу версию. Я знаю, что вы используете Excel, и я использую Word, но раздел, который он обновляет:

Старый .csproj XML:

<Project ...>
  ...
  <ProjectExtensions>
    <VisualStudio>
      <FlavorProperties GUID="{BAA0C2D2-18E2-41B9-852F-F413020CAA33}">
        <ProjectProperties HostName="Word" HostPackage="{20A848B8-E01F-4801-962E-25DB0FF57389}" OfficeVersion="14.0" VstxVersion="4.0" ApplicationType="Word" Language="cs" TemplatesPath="VSTOTemplates" DebugInfoExeName="#Software\Microsoft\Office\14.0\Word\InstallRoot\Path#WINWORD.EXE" DebugInfoCommandLine="/w" AddItemTemplatesGuid="{51063C3A-E220-4D12-8922-BDA915ACD783}" />
        <Host Name="Word"... />
      </FlavorProperties>
    </VisualStudio>
  </ProjectExtensions>
  ...
</Project>

Новый .csproj XML:

<Project ...>
  ...
  <ProjectExtensions>
    <VisualStudio>
      <FlavorProperties GUID="{BAA0C2D2-18E2-41B9-852F-F413020CAA33}">
        <ProjectProperties HostName="Word" HostPackage="{29A7B9D7-A7F1-4328-8EF0-6B2D1A56B2C1}" OfficeVersion="15.0" VstxVersion="4.0" ApplicationType="Word" Language="cs" TemplatesPath="VSTOTemplates" DebugInfoExeName="#Software\Microsoft\Office\15.0\Word\InstallRoot\Path#WINWORD.EXE" DebugInfoCommandLine="/w" AddItemTemplatesGuid="{51063C3A-E220-4D12-8922-BDA915ACD783}" />
        <Host Name="Word"... />
      </FlavorProperties>
    </VisualStudio>
  </ProjectExtensions>
  ...
</Project>

Мне кажется, что изменились две вещи:

  • Путь к реестру от 14.0 до 15.0 (который в VS 2010 был прост для работы - вы только что создали соответствующий путь реестра 14.0, указав, где вы установили Word 2013, и он работал нормально).

  • Идентификатор CLS пакета хоста. Я не знаю, что они для Excel, но вы, вероятно, можете посмотреть их. - Я предпочитаю не изменять идентификатор CLS проверенного в проекте, так что разработчики, разрабатывающие и тестирующие проект в Word 2010, могут продолжать это делать, а также те, которые разрабатывают и тестируют Word 2.0.

Кроме того, похоже, что две ссылки были обновлены с 14.0 до 15.0, а это - серьезный нет-нет - поскольку мы хотим строить только против/встраивать типы Interop 2010 (эти работы отлично работают в 2013 году, но мы не хотим случайно получить доступ к некоторому имуществу 2013 года, а затем не работать в 2010 году...)

Две обновленные ссылки: "Microsoft.Office.Interop.Word" и "Office".

Edit: Похоже, я могу установить эти две ссылки на SpecificVersion: False, а затем вручную отредактировать XML файл, чтобы вернуть их обратно до "14.0.0.0" (версия кажется недоступной из обычного меню).

Ответ 2

Бит поздно к этому - у меня была такая же проблема, пытаясь создать проект документа с текстом в VS 2013 и существующий проект слова 2010.

Мое исправление заключалось в использовании более ранней версии .net framework (версия 4 вместо версии 4.5). Когда я выбрал это в мастере создания проекта, я получаю опции для выбора приложений Office 2010

Я noob для .net, но, похоже, работает отлично для меня

Ответ 3

В меню VS выберите:
проект  свойства Отладка

Изменить начало действия для запуска внешней программы Введите адрес Excel.exe

Что-то вроде C:\Program Files\Microsoft Office\Office15\EXCEL.EXE