Visual studio 2008 如何在不在生成系统上注册的情况下生成Office加载项?

Visual studio 2008 如何在不在生成系统上注册的情况下生成Office加载项?,visual-studio-2008,vsto,office-2007,office-addins,Visual Studio 2008,Vsto,Office 2007,Office Addins,我们正在使用VisualStudio2008构建Office2007加载项。我们的构建是通过一个持续集成服务器(一台机器)执行的,每当我们签入更改或手动请求更改时,该服务器就会构建。服务器可以同时执行构建 我们注意到,当VisualStudio2008构建Office2007加载项时,它也会在执行构建的系统上注册它,即使集成服务器上没有安装Office 有人知道防止Visual Studio 2008在生成外接程序时注册外接程序的方法吗?假设您的持续集成服务器正在使用MSBuild生成Offic

我们正在使用VisualStudio2008构建Office2007加载项。我们的构建是通过一个持续集成服务器(一台机器)执行的,每当我们签入更改或手动请求更改时,该服务器就会构建。服务器可以同时执行构建

我们注意到,当VisualStudio2008构建Office2007加载项时,它也会在执行构建的系统上注册它,即使集成服务器上没有安装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>

C:\BASE\u DIR\
更新: 如果仅在之后进行清理还不够,可以通过覆盖属性(VSTO_ProjectType)停止注册过程。对于office加载项,此属性设置为“应用程序”,从而强制执行注册过程。通过将其设置为自定义值,可以禁用注册。这些示例明确列出了要构建的项目,但您也可以通过指定解决方案文件来测试它们。但是,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>

C:\BASE\u DIR\

集成服务器正在使用Visual Studio SLN文件执行生成。仍然可以修改项目文件;我会调查的。这个解决方案并没有真正停止注册,它只是最小化了注册的持续时间。考虑到正在同时进行构建,我想知道这个持续时间是否仍然太长?