【问题标题】:What does Licenses.licx really do for DevExpress controls?Licenses.licx 对 DevExpress 控件的真正作用是什么?
【发布时间】:2012-03-02 21:27:53
【问题描述】:

Licenses.licx 对 DevExpress 控件的真正作用是什么?我删除了 licenses.licx 中的所有行,没有任何区别。我成功编译并运行了我的应用程序。我对这种行为感到惊讶。谁能给我解释一下发生了什么?

【问题讨论】:

  • 您是否在安装了 DevExpress 组件的同一台开发机器上运行应用程序?
  • @Steve 是的,我在同一台开发机器上运行应用程序。我还在未安装 devexpress 的机器上运行该应用程序。我刚刚复制了相关的 devexpress dll。
  • 许可证通常在设计时检查,而不是运行时检查。开发者付费,而不是开发者的客户。
  • @Hans,有些不太对劲。假定 LC.exe 将各个组件的许可证插入应用程序资源中。如果文件为空,则 LC.EXE 不插入任何内容。因此,当应用程序运行时应该会失败或警告我们的用户我们正在使用未经许可的组件。

标签: .net devexpress


【解决方案1】:

看看this DX 论坛上的帖子:

licenses.licx 文件包含有关您的应用程序中使用的控件的许可信息。然后编译成 App_Licenses.dll。它应该与您的网站一起部署 您部署项目。如果需要重新生成 App_Licenses.dll,右键解决方案中的licenses.licx文件 资源管理器并选择“构建运行时许可证”命令。

【讨论】:

  • 如果要使用MSBuild生成呢?有什么想法吗?
  • @JoePhilllips 安装 [EmptyLicensesLicx][1] nuget 包,它会在编译之前在您的项目中生成一个空的Licenses.licx(这就是您所需要的)。 [1]:nuget.org/packages/EmptyLicensesLicx
【解决方案2】:

DX blog 读取许可证文件是由 Visual Studio 在设计时生成的,并在编译时烧录到程序集中。

Licenses.licx 实际上是您解决方案中的一个文件(如果您看不到 它在那里,单击显示所有文件)。 Visual Studio 使用一个名为 lc.exe 将许可证编译到您的嵌入式资源中 应用

如果你愿意,可以把握它的价值:

这是 licenses.licx 文件中的一行示例。

DevExpress.XtraCharts.Web.WebChartControl, DevExpress.XtraCharts.v8.2.Web,版本=8.2.4.0,文化=中性, PublicKeyToken=9b171c9fd64da1d1

这个逗号分隔列表中的第一个值是类,第二个 是找到它的程序集,其他值是其余的 程序集的强名称。我相信你已经看到了问题, 尤其是当您将解决方案升级到最新版本时 您使用的第三方控件。如果需要,您可以编辑此文件并 删除强名称部分没有问题。

请注意,在源代码管理方面存在已知问题:

问题是 Visual Studio 有接触这个文件的倾向,如果 您打开解决方案(就像更改文件日期一样“感人” 到当前日期/时间)。这会对许可造成严重破坏,尤其是 如果您碰巧在未经许可的机器上打开解决方案并且您是 使用源代码控制。突然你的构建机器会抛出这些 “无法转换”消息,您不知道出了什么问题。 另一个普遍存在的问题是当你有一个开发团队在工作时 关于解决方案:他们都在无意识地“修改”这个文件。

【讨论】:

    猜你喜欢
    • 2013-02-23
    • 2014-04-26
    • 2015-10-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-27
    • 2011-08-19
    • 2019-10-31
    相关资源
    最近更新 更多