4

背景信息:我在 VS2008 中设置了一个非常简单的 .NET 解决方案,其中包含的代码足以在预览窗口中显示 ActiveReports 报告。ActiveReports 组件使用该licenses.licx机制来决定它是否已获得适当的许可。如果它没有找到有效的许可证密钥,它将在报告预览中显示一条突出的消息,说明“这是一个评估副本,[blah blah blah etc.]”。

我的问题:我有两台电脑,都安装了相同版本的 VS2008 和 ActiveReports。每次安装我都有有效的许可证。现在,当我在一台机器上构建我的解决方案时,我得到一个没有评估横幅消息的报告预览,而在另一台机器上,完全相同的解决方案编译为一个将显示评估消息的应用程序。

到目前为止我发现了什么:使用Reflector.NET我发现在第二台机器(显示评估消息)上,许可证编译器(LC.EXE)似乎忽略了licenses.licx. 但它不会显示任何错误或警告消息。

⇒ 所以,这个问题仍然存在:在什么情况下会LC.EXE决定忽略从licenses.licx生成输出MyApplication.licenses嵌入资源时开始的一行文本?


PS:通过删除文件然后通过临时向解决方案添加虚拟报告来重新创建该文件并不能解决问题。licenses.licx这个技巧经常被提到类似的许可问题,但在这里不起作用。licenses.licx文件内容似乎是有效的。

PPS:不完全确定这是堆栈溢出问题还是超级用户问题。

4

1 回答 1

4

好的——我不能确定,但​​我怀疑这个问题的原因。

我怀疑它会在编译该文件时LC.EXE探测列出的所有控件。licenses.licx如果在探测期间,任何列出的控件确定它没有正确授权(无论出于何种原因;例如,因为许可证确实丢失,或者由于安装损坏),许可证编译器不会发出实际的许可证密钥给输出资源流。


更新:几周后,我仍然相信这就是发生的事情。事实证明,授权失败的一台机器安装了损坏的 ActiveReports。运行删除实用程序后,ActiveReports 得到了全新安装,并且许可现在可以在两台机器上运行。

于 2010-06-23T18:33:57.290 回答