.NET 的许可证编译器 (LC.EXE) 似乎会忽略一台计算机上的 licenses.licx 的内容,但在另一台计算机上则不会。为什么?
-
27-09-2019 - |
题
背景资料: 我在 VS2008 中设置了一个非常简单的 .NET 解决方案,其中包含足够的代码来在预览窗口中显示 ActiveReports 报表。ActiveReports 组件使用 licenses.licx
决定其是否已获得适当许可的机制。如果找不到有效的许可证密钥,它将在报告预览中显示一条突出的消息,说明: “这是评估副本,[等等]。”
我的问题: 我有两台计算机,都安装了相同版本的VS2008和ActiveReports。我为每次安装都获得了有效的许可证。现在,当我在一台计算机上构建解决方案时,我会得到一个没有评估横幅消息的报告预览,而在另一台计算机上,完全相同的解决方案会编译为将显示评估消息的应用程序。
到目前为止我发现了什么: 使用 反射器.NET 我发现在第二台机器(显示评估消息)上,许可证编译器(LC.EXE
)不知何故似乎忽略了 ActiveReports 许可证行 licenses.licx
. 。但它不会显示任何错误或警告消息。
⇒ 所以,这个问题仍然存在: 什么情况下会 LC.EXE
决定忽略一行文本 licenses.licx
当它产生输出时 MyApplication.licenses
嵌入资源?
附: 问题是 不是 通过删除解决 licenses.licx
文件,然后通过临时向解决方案添加虚拟报告来重新创建该文件。这个技巧是 经常提到 对于类似的许可问题,但它在这里不起作用。这 licenses.licx
文件内容似乎有效。
附注: 不完全确定这是一个 Stack Overflow 问题还是超级用户问题。
解决方案
好的 – 我不能确定,但我怀疑这个问题的原因。
我怀疑 LC.EXE
将探测列出的所有控件 licenses.licx
当它编译该文件时。如果在调查期间,任何列出的控制措施确定其未获得适当许可(无论出于何种原因;例如因为许可证确实丢失,或者由于安装损坏),许可证编译器不会将实际的许可证密钥发送到输出资源流。
更新: 几周后,我仍然相信这就是发生的事情。事实证明,许可失败的一台计算机的 ActiveReports 安装已损坏。运行删除实用程序后,ActiveReports 得到了全新安装,并且许可现在可以在两台计算机上使用。