継続的インテグレーション サーバーが MSBuild を使用して Office 2007 アドインをビルドしていると仮定すると、簡単な回避策は Build ターゲットを実行し、その後に 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 アドインの場合、このプロパティはApplicationに設定され、登録プロセスが強制的に実行されます。カスタム値に設定すると、登録が無効になります。これらの例では、ビルドするプロジェクトを明示的にリストしていますが、ソリューション ファイルを指定してテストすることもできます。ただし、CI サーバーはビルドを実行するために VS ではなく MSBuild を直接使用する必要があります。
<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>