如何使用licenses.licx文件

Cha*_*thJ 48 c# cruisecontrol.net msbuild visual-studio

我有一个包含在我的项目属性中的licenses.licx文件.我不确定它的dll是如何使用它的.它是否被msbuild使用?您是否知道在解决方案构建时如何使用它?

Ric*_*ter 29

由于您表明StellarEleven的回复没有帮助,我想您正在寻找更简单的东西.这可能不是100%正确,但我理解这是如何工作的:

licx文件只是应用程序使用的"许可"组件的列表.

文件中的每一行都具有以下格式:

[Component Name], [Assembly Name]
Run Code Online (Sandbox Code Playgroud)

例如,我的一个项目使用许可的IP Works NetDial组件,因此我的.licx文件包含以下行:

nsoftware.IPWorks.Netdial, nsoftware.IPWorks
Run Code Online (Sandbox Code Playgroud)

在项目(.csproj)文件的上下文中,.licx文件被引用为EmbeddedResource.在构建过程中,LC.exe会验证执行构建的计算机是否具有相关组件的相应许可证,并生成二进制.licenses文件,该文件最终作为资源嵌入([AssemblyName] .exe.licenses )在最终的可执行文件中.

这有帮助吗?

  • 我不这么认为.我相信你所谈论的publicKeyToken用于确保引用的程序集没有被篡改.LC使用的机制是在这个问题的另一个答案中描述的机制 - 特别是组件的LicenseProvider属性(如果有的话),然后通过反射查询(调用GetLicense).如果我理解正确(我可能没有),那么从该调用返回的License对象将被序列化为.licenses文件. (4认同)
  • 您是否知道LC.exe如何验证机器是否具有相应的许可证?我在许可证文件中有publicKeyToken.这是LC.exe用来验证的吗?谢谢! (2认同)
  • 不幸的是,因为LicenseProvider是通过反射访问的,所以每个许可组件可能(并且很可能)使用自己的机制来确定构建机器上的许可证状态. (2认同)

Cha*_*thJ 18

Licenses.licx文件困难

在ASP.NET,WTF部门下提交此文件.

沮丧当您使用我们的控件开发Web应用程序时,会出现一个名为licenses.licx的神秘文件.不,这不是使用奇怪命名的棒棒糖的命令,而是由参与许可证检查的Visual Studio生成(和修改)的过渡文件.在设计模式下,Visual Studio使用此文件记下您在设计中使用的每个许可控件.然后,当您构建应用程序时,Visual Studio会读取此licenses.licx文件,并且对于那里提到的每个控件,将加载相关的程序集并在该程序集中运行许可证代码以查看程序集是否获得了适当的许可(即,该产品它所属的已正确安装在该机器上).如果所有内容都检出,Visual Studio会将许可证密钥嵌入到可执行文件中.如果没有,

Licenses.licx实际上是解决方案中的文件(如果您在那里看不到它,请单击"显示所有文件").Visual Studio使用一个名为lc.exe的程序将许可证编译到应用程序中的嵌入式资源中,当许可证编译出现问题时,我也看到了引用此可执行文件的错误消息.

以下是licenses.licx文件中一行的示例.

DevExpress.XtraCharts.Web.WebChartControl,DevExpress.XtraCharts.v8.2.Web,Version = 8.2.4.0,Culture = neutral,PublicKeyToken = 9b171c9fd64da1d1

此逗号分隔列表中的第一个值是类,第二个是找到它的程序集,其他值是程序集强名称的其余部分.我确信您已经可以看到问题,尤其是当您将解决方案升级到您使用的最新版本的第三方控件时.如果需要,您可以编辑此文件并删除强名称部分,没有任何问题.

但这不是license.licx的最大问题.事情是,如果您打开解决方案(在将文件日期更改为当前日期/时间时"触摸"),Visual Studio倾向于触摸此文件.这会对许可造成严重破坏,特别是如果您在非许可机器上打开解决方案并且您正在使用源代码管理.突然,你的构建机器将抛弃这些"无法转换"的消息,你就会想知道出了什么问题.另一个普遍存在的问题是当你有一个开发人员团队正在研究解决方案时:他们都在无意识地"修改"这个文件.

所以,答案似乎不是将licenses.licx文件置于源代码管理之下.(知识库文章)

但是这个问题的解决方案又引发了另一个问题:如果团队中的某个开发人员添加了需要向表单许可的新控件,则会将一行添加到他的本地licenses.licx文件中,并且它可能不会反映在源代码管理中.Bam,您的构建计算机无法构建,而添加控件的Joe必须为团队购买甜甜圈,直到其他人破坏构建.

我担心后一个问题我没有很好的解决方案,因为不幸的是,"不将license.licx放在源代码管理中"似乎是每个人解决许可问题的方式.另一个解决方案是完全删除licenses.licx文件,然后通过打开解决方案让Visual Studio重新生成它(虽然这在构建机器上有点困难).

无论如何,希望所有人都能以某种方式提供帮助.用手机打你的笔记本电脑并没有真正帮助.

  • 最后一句话“用手机打你的笔记本电脑并没有真正的帮助。” ..... 精彩的 (3认同)