在 ASP.NET,WTF 部门下归档。
当您使用我们的 Web 应用程序开发 Web 应用程序时感到沮丧
控件,出现一个名为 licenses.licx 的神秘文件。不,这不对
使用一个名字奇怪的棒棒糖的命令,但它是一个过渡文件
由参与许可的 Visual Studio 生成(和修改)
检查。在设计模式下,Visual Studio 使用此文件做笔记
您在设计中使用的每个许可控件。当你然后建立
您的应用程序,Visual Studio 读取此 licenses.licx 文件并用于
那里提到的每个控件,都会加载相关的程序集并运行
该程序集中的许可证代码,以查看该程序集是否正确
许可(即其所属的产品已
正确安装在该机器上)。如果一切顺利,Visual
Studio 将许可证密钥嵌入到可执行文件中。如果没有,
您会收到有关控件未获得许可的奇怪错误消息
(我最喜欢的是“无法转换许可证文件 'licenses.licx'
到二进制资源中。”我通常调用彩色
我祖先的语言)。
Licenses.licx 实际上是您解决方案中的一个文件(如果您看不到
它在那里,单击显示所有文件)。 Visual Studio 使用一个名为
lc.exe 将许可证编译到您的嵌入式资源中
应用程序,当许可证编译出现问题时,我已经
也看到了引用此可执行文件的错误消息。
这是 licenses.licx 文件中的一行示例。
DevExpress.XtraCharts.Web.WebChartControl,
DevExpress.XtraCharts.v8.2.Web,版本=8.2.4.0,文化=中性,
PublicKeyToken=9b171c9fd64da1d1
这个逗号分隔列表中的第一个值是类,第二个
是找到它的程序集,其他值是其余的
程序集的强名称。我相信你已经看到了问题,
尤其是当您将解决方案升级到最新版本时
您使用的第三方控件。如果需要,您可以编辑此文件并
删除强名称部分没有问题。
但这不是 licenses.licx 的最大问题。事情是
如果您打开
解决方案(这是“感人的”,就像将文件日期更改为
当前日期/时间)。这会对许可造成严重破坏,尤其是如果您
碰巧在未经许可的机器上打开解决方案并且您正在使用
源头控制。突然你的构建机器会抛出这些
“无法转换”消息,您不知道出了什么问题。
另一个普遍存在的问题是当你有一个开发团队在工作时
关于解决方案:他们都在无意识地“修改”这个文件。
所以,答案似乎不是将 licenses.licx 文件放在
源头控制。 (KB article)
但这个问题的解决方案引发了另一个危险信号:如果其中一个
团队中的开发人员添加了一个需要许可的新控件
表格中,一行被添加到他的本地 licenses.licx 文件中,它可能
不会反映在源代码管理中。 Bam,你的构建机器失败了
build 和添加控件的 Joe 必须为
团队合作,直到其他人破坏构建。
恐怕我对后一个问题没有好的解决方案,因为
不幸的是,“没有把 licenses.licx 放在源代码控制中”似乎
成为每个人解决许可问题的方式。其他
解决方案是完全删除 licenses.licx 文件,然后获取
Visual Studio 通过打开解决方案重新生成它(尽管这
在构建机器上有点困难)。
无论如何,希望对大家有所帮助。然后用你的笔记本电脑
手机并没有真正的帮助。