Как создать надстройку Office, не регистрируя ее в системе сборки?

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

Вопрос

Мы создаем надстройки Office 2007 с использованием Visual Studio 2008.Наши сборки выполняются через сервер непрерывной интеграции (одна машина), который выполняет сборку всякий раз, когда мы вносим изменения или запрашиваем их вручную.Сервер может выполнять одновременные сборки.

Мы заметили, что когда Visual Studio 2008 создает надстройку Office 2007, она также регистрирует ее в системе, выполняющей сборку, даже если Office не установлен на сервере интеграции.

Кто-нибудь знает способ запретить Visual Studio 2008 регистрировать надстройку при ее создании?

Это было полезно?

Решение

Предполагая, что ваш сервер непрерывной интеграции использует MSBuild для сборки надстройки Office 2007, быстрым решением будет выполнить цель сборки, за которой следует цель VSTOClean.

Вы можете достичь этого, создав файл проекта MSBuild (master.proj), который управляет процессом сборки, как показано в следующем примере:

<Project 
  DefaultTargets="Build" 
  xmlns="http://schemas.microsoft.com/developer/msbuild/2003" >
  <PropertyGroup>
    <WorkingDirectory>C:\BASE_DIR\</WorkingDirectory>
  </PropertyGroup>

  <ItemGroup>
    <VstoProject Include = "$(WorkingDirectory)OfficeAddInProject1.csproj"/>
    <VstoProject Include = "$(WorkingDirectory)OfficeAddInProject1.csproj"/>
  </ItemGroup>

  <Target Name="Build">
    <MSBuild Projects="@(VstoProject)" Targets="Build;VSTOClean" />
  </Target>
</Project>

Обновить: Если очистки после вам недостаточно, вы можете остановить процесс регистрации, переопределив свойство (VSTO_ProjectType).Для надстройки office этому свойству присвоено значение Применение что заставляет процесс регистрации выполняться.Установив для него пользовательское значение, вы отключаете регистрацию.В этих примерах явно указано, какие проекты необходимо создавать, но вы также можете протестировать их, указав файл решения.Однако сервер CI должен использовать MSBuild напрямую, а не VS для выполнения сборок.

<Project 
  DefaultTargets="Build" 
  xmlns="http://schemas.microsoft.com/developer/msbuild/2003" >
  <PropertyGroup>
    <WorkingDirectory>C:\BASE_DIR\</WorkingDirectory>
  </PropertyGroup>

  <ItemGroup>
    <VstoProject Include = "$(WorkingDirectory)OfficeAddInProject1.csproj"/>
    <VstoProject Include = "$(WorkingDirectory)OfficeAddInProject1.csproj"/>
  </ItemGroup>

  <Target Name="Build">
    <MSBuild 
        Projects="@(VstoProject)" 
        Targets="Build" 
        Properties="VSTO_ProjectType=Custom" />
  </Target>
</Project>
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top