Pergunta

Estamos construindo complementos do Office 2007 usando o Visual Studio 2008. Nossas construções são realizadas por meio de um servidor de integração contínuo (uma máquina) que é construída sempre que verificamos alterações ou solicitamos manualmente um. O servidor pode executar construções simultâneas.

Percebemos que, quando o Visual Studio 2008 cria um suplemento do Office 2007, ele também o registra no sistema executando a compilação, mesmo que o Office não esteja instalado no servidor de integração.

Alguém sabe de uma maneira de impedir que o Visual Studio 2008 registre o suplemento à medida que ele o constrói?

Foi útil?

Solução

Supondo que seu servidor de integração contínuo esteja usando o MSBuild para construir os suplementos do Office 2007, uma solução alternativa rápida será executar um alvo de construção seguido por um alvo vstoclean.

Você pode conseguir isso criando um arquivo de projeto MSBuild (Master.proj) que controla o processo de construção, conforme ilustrado no exemplo a seguir:

<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>

Atualizar:Se a limpeza após não for suficiente para você, você poderá interromper o processo de registro substituindo a propriedade (vsto_projectType). Para um suplemento de escritório, esta propriedade está definida como Inscrição que força o processo de registro a ocorrer. Ao defini -lo em um valor personalizado, você desative o registro. Esses exemplos listam explicitamente quais projetos a construção, mas você pode testá -los também especificando um arquivo de solução. No entanto, o servidor de CI deve usar o MSBuild diretamente e não o VS para executar as compilações.

<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>
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top