Domanda

Stiamo costruendo Office 2007 componenti aggiuntivi che utilizzano Visual Studio 2008. Il nostro costruisce vengono eseguite tramite un server di integrazione continua (una macchina) che costruisce ogni volta che il check-in modifiche o manualmente richiederne uno. Il server può eseguire contemporaneamente costruisce.

Abbiamo notato che quando Visual Studio 2008 costruisce un Office 2007 componente aggiuntivo, si registra anche sul sistema di eseguire la compilazione, anche se Office non è installato sul server di integrazione.

Qualcuno sa di un modo per evitare che Visual Studio 2008 di registrare il componente aggiuntivo come si costruisce?

È stato utile?

Soluzione

Assumendo che il server di integrazione continua sta utilizzando MSBuild per costruire l'Office 2007 Add-in è una soluzione rapida sarà quello di eseguire un bersaglio Corporatura seguito da un target VSTOClean.

È possibile raggiungere questo obiettivo la creazione di un file di progetto MSBuild (master.proj) che controlla il processo di compilazione, come illustrato nel seguente esempio:

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

Aggiornamento: Se la pulizia dopo non è abbastanza per voi è possibile interrompere il processo di registrazione sovrascrivendo la proprietà (VSTO_ProjectType). Per un ufficio aggiuntivo in questa proprietà è impostata su Application che costringe il processo di registrazione di prendere posto. Impostandolo a un valore personalizzato di disattivare la registrazione. Questi esempi esplicitamente elencare i progetti da costruire ma è possibile testare anche specificando un file di soluzione. Tuttavia il server CI deve utilizzare MSBuild direttamente e non VS per eseguire le generazioni.

<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>
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top