Visual studio 2008 如何在不在生成系统上注册的情况下生成Office加载项?
我们正在使用VisualStudio2008构建Office2007加载项。我们的构建是通过一个持续集成服务器(一台机器)执行的,每当我们签入更改或手动请求更改时,该服务器就会构建。服务器可以同时执行构建 我们注意到,当VisualStudio2008构建Office2007加载项时,它也会在执行构建的系统上注册它,即使集成服务器上没有安装OfficeVisual 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
有人知道防止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文件执行生成。仍然可以修改项目文件;我会调查的。这个解决方案并没有真正停止注册,它只是最小化了注册的持续时间。考虑到正在同时进行构建,我想知道这个持续时间是否仍然太长?