我已经“继承”了一个新的(旧的?)Winforms项目,并希望将其放到我们的构建服务器(Bamboo)上。该构建服务器仅安装了绝对最小值(.NET 3.5,而没有更多),我们希望保持这种状态。
第一步,我将Infragistics组件的所有程序集文件(* .dll)提取到一个单独的目录中,并从该本地目录中引用它们(而不是依赖于它们在GAC中的安装)。工作正常。
但是,当我尝试在Bamboo上运行此版本(使用MSBuild)时,却不断收到错误消息:
Properties \ licenses.licx(1):错误
LC0004:发生异常创建
类型
'Infragistics.Win.UltraWinToolbars.UltraToolbarsManager,
Infragistics2.Win.UltraWinToolbars.v7.2,
版本= 7.2.20072.61,文化=中性,
PublicKeyToken = 7dd5c3163f2cd0cb'
System.ComponentModel.LicenseException
经过一番谷歌搜索后,项目中的那些licenses.licx
文件似乎是一种许可方案,以防止将这些工具安装在多台计算机上。
但是,如何摆脱这些限制,以便构建服务器构建能够正常工作,而无需在构建服务器上安装完整的Infragistics组件集(这不是一个选择)?
如果我只是从项目中删除它们,则该构建可能会起作用(尚未尝试),但是我的设计时经验会受到影响/不起作用(两者中的哪一个?)
随处携带文件,以便我的设计时经验能防止自动构建运行...。
嗯....经典的catch-22-有什么办法吗?
最佳答案
我发现解决此问题的唯一方法是:
在解决方案所在的文件夹中创建一个绝对为空(长度为0字节)的文件licenses.licx
在构建的初始阶段,从我的源存储库中提取源
时间到了,就在构建开始之前,我将这个空的licenses.licx
复制到各个项目的licenses.licx
目录中的所有现有Properties
上
有了这个,我现在有了两种互动的经验(因为存在正确的licenses.licx
文件),但是我的自动构建也没有中断(因为复制到所有真实文件中的空licenses.licx
文件没有)导致构建中止)
似乎有点骇人听闻-但它可行。希望有一天能对某人有所帮助。
更新:我将此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>
由于我需要在多个位置替换此* .licx文件,因此实际上我有几个
<Copy>
任务可以实现我的目标。
关于licensing - 构建服务器上的基础设施组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2071459/