4

在 VS2010 解决方案中,我有一个 license.licx 文件,其中包含:

DataDynamics.ActiveReports.ActiveReport, ActiveReports6, Version=6.1.2814.0, Culture=neutral, PublicKeyToken=cc4967777c49a3ff
DataDynamics.ActiveReports.Web.WebViewer, ActiveReports.Web, Version=6.1.2814.0, Culture=neutral, PublicKeyToken=cc4967777c49a3ff
DataDynamics.ActiveReports.Export.Pdf.PdfExport, ActiveReports.PdfExport, Version=6.1.2814.0, Culture=neutral, PublicKeyToken=cc4967777c49a3ff
DataDynamics.ActiveReports.Design.Designer, ActiveReports.Design6, Version=6.1.2814.0, Culture=neutral, PublicKeyToken=cc4967777c49a3ff
DataDynamics.ActiveReports.Viewer.Viewer, ActiveReports.Viewer6, Version=6.1.2814.0, Culture=neutral, PublicKeyToken=cc4967777c49a3ff

如果我在具有 ActiveReport 许可证的机器上构建解决方案,那么一切都很好。如果我在没有 ActiveReport 许可证的机器上构建解决方案,我会得到:

错误 1 ​​'无法加载文件或程序集 'ActiveReports6,版本 = 6.1.2814.0,文化 = 中性,PublicKeyToken = cc4967777c49a3ff' 或其依赖项之一。不支持操作。(来自 HRESULT 的异常:0x80131515)' LC

如果我从 license.licx 文件中删除上述行,那么在没有 ActiveReport 许可证的机器上,一切正常。我一直认为,如果找不到许可证,那么将使用未经许可的版本,但它不会杀死构建。无论是否有许可证,我如何让这个解决方案在任何机器上构建?

4

4 回答 4

3

实际上,这台机器似乎没有安装特定版本的 ActiveReports。

我们通过将外部程序集存储在相对于项目的路径(即 ..\Assemblies)中并修改所有项目以包含 HintPath 来解决此类问题,例如:

<Reference Include="ActiveReports3">
  <SpecificVersion>False</SpecificVersion>
  <HintPath>..\..\..\..\Assemblies\ActiveReports3.dll</HintPath>
</Reference>

这样,您不必担心每个开发人员都安装了完全相同的版本。您应该能够使用此配置进行调试,但不能为发布而构建。

更新

我忘了提到我们实施的另一种做法:除非组件绝对需要它(我们只有一个我能想到的),否则我们从不将版本存储在 license.licx 文件中。上述示例的 licenses.licx 条目是:

DataDynamics.ActiveReports.ActiveReport3, ActiveReports3

如果您这样做,您必须掌握 licenses.licx 文件,但它肯定可以解决各种版本控制问题。

于 2011-12-01T17:05:31.980 回答
3

联系了 ActiveReports,他们告诉我可以为每个用户维护一个许可证文件,无论他们是否有付费许可证。诀窍是不生成报告的用户需要安装试用许可证(ActiveReports 免费提供),而付费购买许可证的用户将拥有自己的许可证。试用许可证,就像真正的付费许可证一样,将处理 license.licx 文件,并在看到 .licx 文件中识别的条目时提供适当的操作。

于 2011-12-06T16:10:39.750 回答
2

如果我在没有 ActiveReport 许可证的机器上构建解决方案,我会得到

这是问题的一部分。通常,许可要求每个开发人员都拥有许可证。尝试仅许可您的开发团队的一部分可能违反您的 ActiveReports 许可。

于 2011-12-01T17:18:00.890 回答
1

按照您描述的方式使用 ActiveReports 的试用版应该是完全可以的。我已经看到 Visual Studio 对各种组件的许可存在许多问题。通常可以使用以下步骤解决它们:

  • 使用 Build > Clean 清理解决方案
  • 删除 licx 文件(Visual Studio 将根据需要生成此文件)。
  • 将 ARViewer 控件添加到项目中的表单(您可以稍后再次删除它)。这需要在具有有效 ActiveReports 许可证的机器上完成。这就是应该触发使用正确信息重新生成 licx 文件的原因。
  • 重建(确保你进行真正的重建,我知道这应该是一个干净的+构建,但重建有时似乎很重要)。

除此之外,只需验证您的参考资料是否正确。例如,确保您没有在解决方案的不同项目中引用多个版本的 DLL,并确保“复制本地”和“使用特定版本”符合您的预期。

如果您仍然有问题,请创建一个新项目,添加 ActiveReports(或您遇到问题的任何组件)并快速执行“hello world”风格的应用程序以确保其正常工作,然后比较两个项目(参考、文件、 ETC。)。

于 2011-12-01T23:34:56.437 回答