我们正在建设使用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)停止注册过程。对于一个办公室外接该属性被设置为应用这迫使注册过程发生。通过将其设置为自定义值禁用注册。这些例子明确列出项目,以建立它,但你可以通过指定一个解决方案文件也对其进行测试。然而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>
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top