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