构建服务器上的Infragistics组件

mar*_*c_s 18 build-automation licensing infragistics emptylicenseslicx licenseslicx

我已经"继承"了一个新的(旧的?)Winforms项目,并希望将它放到我们的构建服务器(Bamboo)上.该构建服务器只安装了绝对最小值(.NET 3.5,而不是更多),我们希望保持这种状态.

作为第一步,我将Infragistics组件的所有汇编文件(*.dll)解压缩到一个单独的目录中,并从该本地目录引用它们(而不是依赖它们安装在GAC中).工作正常.

但是当我尝试在Bamboo(使用MSBuild)上运行此构建时,我不断收到错误:

Properties\licenses.licx(1):错误LC0004:创建类型'Infragistics.Win.UltraWinToolbars.UltraToolbarsManager,Infragistics2.Win.UltraWinToolbars.v7.2,Version = 7.2.20072.61,Culture = neutral,PublicKeyToken = 7dd5c3163f2cd0cb'系统发生异常.ComponentModel.LicenseException

经过一些谷歌搜索,似乎licenses.licx项目中的那些文件是某种许可方案,以防止工具安装在几台机器上.

但是,我如何摆脱那些,以便我的构建服务器构建将工作,而无需在构建服务器上安装完整的Infragistics组件集(这不是一个选项)?

  • 如果我只是从项目中删除它们,那么构建可能会起作用(还没有尝试过),但是我的设计时间经验会受到影响/不能正常工作(两者中的哪一个?)
  • 拥有文件,以便我的设计时间体验可以防止自动构建运行....

嗯....经典的捕获22 - 任何出路?

mar*_*c_s 26

我找到解决这个问题的唯一方法是:

  • licenses.licx在解决方案所在的文件夹中创建一个绝对空(0字节长)的文件
  • 在构建的初始阶段,源是从我的源存储库中提取的
  • 当时间到来时,就在构建开始之前,我将这个空白复制到各个项目目录中的licenses.licx所有现有内容licenses.licxProperties

有了这个,现在我有我的交互式体验(因为存在正确的licenses.licx文件),但我的自动构建也没有中断(因为licenses.licx我复制了所有真实文件的空文件不会导致构建中的任何中止)

似乎有点hackish - 但它的工作原理.希望有一天能帮到别人某个地方.

更新:我将此BeforeBuild步骤添加到我的MSBuild构建文件,以将空*.licx文件复制到我需要的位置:

<Target Name="BeforeBuild">
   <CreateItem Include="licenses.licx">
       <Output TaskParameter="Include" ItemName="EmptyLicensesLicx" />
   </CreateItem>

   <Copy SourceFiles="@(EmptyLicensesLicx)" 
         DestinationFolder="(your-target-folder-here)" 
         ContinueOnError="true" />

</Target>
Run Code Online (Sandbox Code Playgroud)

由于我需要在几个地方替换这个*.licx文件,我实际上有几个<Copy>任务来实现我的目标.

  • @Philip Wallace:更新了我的帖子以详细说明我是如何做到的 - 希望这有帮助! (2认同)