我们正在使用 Visual Studio 2008 构建 Office 2007 加载项。我们的构建是通过持续集成服务器(一台机器)执行的,只要我们签入更改或手动请求更改,该服务器就会构建。服务器可以执行同时构建。
我们注意到,当 Visual Studio 2008 构建 Office 2007 加载项时,它也会在执行构建的系统上注册它,即使集成服务器上没有安装 Office。
有谁知道阻止 Visual Studio 2008 在构建加载项时注册它的方法?
我们正在使用 Visual Studio 2008 构建 Office 2007 加载项。我们的构建是通过持续集成服务器(一台机器)执行的,只要我们签入更改或手动请求更改,该服务器就会构建。服务器可以执行同时构建。
我们注意到,当 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 加载项,此属性设置为Application,这会强制执行注册过程。通过将其设置为自定义值,您可以禁用注册。这些示例明确列出了要构建的项目,但您也可以通过指定解决方案文件来测试它们。但是 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>