如何构建一个Office插件,而不会注册它在构建系统上?
-
23-09-2019 - |
题
我们正在建设使用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>
不隶属于 StackOverflow