我“继承”了一个新的(旧的?)Winforms 项目,并希望将其放到我们的构建服务器(Bamboo)上。该构建服务器只安装了绝对最低限度的版本(.NET 3.5,仅此而已),我们希望保持这种状态。
第一步,我将 Infragistics 组件的所有程序集文件 (*.dll) 提取到一个单独的目录中,并从该本地目录引用它们(而不是依赖于将它们安装在 GAC 中)。工作正常。
但是当我尝试在 Bamboo 上运行此构建(使用 MSBuild)时,我不断收到错误:
属性\licenses.licx(1):错误
LC0004:创建时发生异常
类型
'Infragistics.Win.UltraWinToolbars.UltraToolbarsManager,
Infragistics2.Win.UltraWinToolbars.v7.2,
版本=7.2.20072.61,文化=中立,
PublicKeyToken=7dd5c3163f2cd0cb'
System.ComponentModel.LicenseException
经过一番谷歌搜索后,似乎那些licenses.licx
项目中的文件是某种许可方案,以防止这些工具安装在多台计算机上。
但是我怎样才能摆脱这些,以便我的构建服务器构建能够工作,without将完整的 Infragistics 组件集安装到构建服务器上(这是NOT一个选项)??
- 如果我只是从项目中删除它们,构建可能会起作用(尚未尝试),但我的设计时经验将受到影响/不起作用(两者中的哪一个?)
- 拥有这些文件,以便我的设计时经验有效,可以防止自动构建运行......
嗯......经典的第 22 条军规 - 有什么办法摆脱这个吗?
我发现解决这个问题的唯一方法是:
- 创建一个绝对空(0字节长度)的文件
licenses.licx
在我的解决方案所在的文件夹中
- 在构建的初始阶段,源代码是从我的源存储库中提取的
- 当时间到了,就在构建开始之前,我复制这个空的
licenses.licx
超过所有现有的licenses.licx
在各个项目中'Properties
目录
有了这个,现在我的交互体验都可以工作了(因为正确的licenses.licx
文件存在),但我的自动构建也不会中断(因为空的licenses.licx
我复制的所有真实文件不会导致构建中任何中止)
看起来有点老套——但它确实有效。希望有一天能帮助某人、某地。
Update:我添加了这个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>
任务来实现我的目标。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)