基于Licenses.licx的.NET组件许可模型是如何工作的?

53

我曾遇到过多个使用许可证方案的第三方 .Net 组件供应商。在评估版上,组件会显示一个提示框或水印等指示器。在有许可证的计算机上,将创建一个 Licenses.licx 文件 - 其中仅包含程序集的完整名称/标识符。当生成客户端程序集时,必须包括此文件。

  • 这种模型是如何工作的?从组件供应商和用户的角度来看。
  • .licx 文件用于什么?它应该被检入吗?我们曾遇到过一些问题,例如检入错误/正确的 .licx 文件等

2
我的回答并不是真正的答案 - 我只想提供一个链接,指向一篇讨论是否将licnses.licx文件检入代码库的文章。http://community.devexpress.com/blogs/ctodx/archive/2009/03/06/licenses-licx-file-woes.aspx 特别是,请查看添加到博客文章中的各种评论。 - RenniePet
3个回答

24

那不正确。Licx文件非常重要,对于主机应用程序嵌入正确的许可信息构建是必需的。因此,将Licx文件包含在源代码控制中也是至关重要的。否则,检出源代码到另一台机器上的人将无法获得Licx文件,构建可能会失败或者.exe中使用的组件没有正确的许可信息。


1
或者可以说,构建源代码的机器应该具有适当的许可证,这样就不需要分发了...? - user166390
1
我不明白哪里不正确。也许这是对另一个答案的引用?其余部分的回答是独立的。 - madth3
2
或者可以说,构建源代码的机器应该具有适当的许可证。以这种方式进行会导致许可信息被省略在生成的可执行文件中,没有这些信息,取决于控件,该控件可能无法正常工作。它可能在开发系统上运行,其中该控件是系统范围内许可的,但在没有经过许可的控件版本的最终用户系统上可能无法正常工作。 - user743382
包括license.licx文件可能会在构建服务器上引起问题,因为控件也需要在那里安装;这通常是不可能的。因此,您不应添加licx文件,而是手动构建.licenses文件,并将其作为嵌入式资源添加到项目中。 - L-Four

14
几乎所有与.NET许可证有关的内容都可以在这里找到详细解释,不需要重写。
如果可以的话,最好从项目中排除许可证文件,否则编辑可视化组件可能会很麻烦。此外,将许可证文件存储在源代码控制库中并非必需。
希望这能帮到你。

8
整篇文章中都没有提到"licx"这个词,这与问题有什么关联呢? - Joe White
2
我在某种程度上同意Joe White的观点。它确实解释了许可证并推断了licx可能会做什么,但并没有直接回答这个问题。 - xr280xr
文章的新网址是https://www.developer.com/microsoft/dotnet/applications-licensing-using-the-net-framework/,原始文章的存档版本位于https://web.archive.org/web/20170227185258/https://www.developer.com/net/csharp/article.php/3074001。 - Nils

10

这是一篇关于该主题的好文章:点击这里

为了部署一个带有类似TX Text Control这样的许可组件的应用程序,必须正确地对EXE文件进行许可。

.NET许可机制建议将许可证添加到EXE - 调用程序集中。

---- 详细发生了什么?

如果你从Visual Studio工具箱中拖放TextControl到一个表单上,Visual Studio会创建一个licenses.licx文件并包含许可信息。此文件位于与您的项目文件相同的文件夹中。

重要提示: licenses.licx文件不包含许可字符串本身。它只包含有关已许可组件的信息。对于TX Text Control(TXTextControl.TextControl),添加以下字符串:

TXTextControl.TextControl, TXTextControl, Version=15.0.700.500, Culture=neutral, PublicKeyToken=6b83fe9a75cfb638

正如您所看到的,它包含命名空间和控件名称、程序集版本、文化信息以及唯一的公钥标记。基于这些信息,许可证编译器(lc.exe)将编译真实的许可证字符串,该字符串将嵌入到可执行程序集中。lc.exe是.NET Framework SDK的一个小型实用程序,在构建过程中被Visual Studio使用。

---- 如果我在用户控件中使用TX Text Control怎么办?

在这种情况下,您还需要将许可证添加到主要可执行文件中。因此,您可以简单地将TextControl拖放到主项目的虚拟窗体中,以便自动添加licenses.licx文件和引用。

之后,您可以将TextControl从该窗体中删除,或者您可以直接复制或创建一个licenses.licx文件到主项目文件夹中。在这种情况下,您还需要手动添加对TX Text Control的引用。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接