3

我们正在使用 Visual Studio 2008 构建 Office 2007 加载项。我们的构建是通过持续集成服务器(一台机器)执行的,只要我们签入更改或手动请求更改,该服务器就会构建。服务器可以执行同时构建。

我们注意到,当 Visual Studio 2008 构建 Office 2007 加载项时,它也会在执行构建的系统上注册它,即使集成服务器上没有安装 Office。

有谁知道阻止 Visual Studio 2008 在构建加载项时注册它的方法?

4

1 回答 1

1

假设您的持续集成服务器正在使用 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>
于 2010-02-27T00:16:16.010 回答