我有一个licenses.licx文件,它包含在我的一个项目属性中。我不确定它是如何被其dll使用的。它是否被msbuild使用?你知道在构建解决方案时它是如何被使用的吗?
我有一个licenses.licx文件,它包含在我的一个项目属性中。我不确定它是如何被其dll使用的。它是否被msbuild使用?你知道在构建解决方案时它是如何被使用的吗?
由于您提到 StellarEleven的回复 没有帮助,我猜想您正在寻找更简单的方法。这可能不是100%正确的,但这是我对此如何工作的理解:
licx文件仅是应用程序使用的“已许可”组件列表。
文件中的每一行都采用以下格式:
[Component Name], [Assembly Name]
例如,我的一个项目使用了许可的IP Works NetDial组件,因此我的.licx文件包含以下行:
例如,我的一个项目使用了许可的IP Works NetDial组件,因此我的.licx文件包含以下行:
nsoftware.IPWorks.Netdial, nsoftware.IPWorks
在项目(.csproj)文件的上下文中,.licx文件被引用为嵌入式资源(EmbeddedResource)。在构建过程中,LC.exe验证执行构建操作的计算机是否具有相关组件的许可证,并生成一个二进制.licenses文件,该文件最终嵌入到最终可执行文件中作为资源([AssemblyName].exe.licenses)。
这能帮到你吗?
这属于ASP.NET, WTF部门。
当您使用我们的控件开发Web应用程序时,会出现一个神秘的文件licenses.licx。不,这不是使用奇怪名称的棒棒糖的命令,而是由Visual Studio生成(和修改)的过渡文件,参与许可证检查。在设计模式下,Visual Studio使用此文件来记录您在设计中使用的每个已许可控件的注释。然后,在构建应用程序时,Visual Studio读取此licenses.licx文件,并为其中提到的每个控件加载相关的程序集并运行该程序集中的许可证代码,以查看该程序集是否已正确许可(即所属产品是否已正确安装在该计算机上)。如果一切正常,Visual Studio将许可证密钥嵌入可执行文件中。如果不行,您将收到有关控件未获得许可的奇怪错误消息(我的最爱是“无法将许可证文件'licenses.licx'转换为二进制资源。”,我通常会引用我祖先的丰富多彩的语言)。
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
逗号分隔列表中的第一个值是类,第二个值是找到它的程序集,其他值是程序集的其余强名称。我相信您已经看到了问题,尤其是当您将解决方案升级到使用的第三方控件的最新版本时。如果您愿意,可以编辑此文件并轻松删除其中的强名称部分。
但是,licenses.licx的最大问题不是这个。事实上,Visual Studio有一种倾向,即如果您打开解决方案,则会触及此文件(这是“触摸”,即将文件日期更改为当前日期/时间)。这对许可证造成了混乱,特别是如果您在未获得许可的计算机上打开解决方案并且正在使用源代码控制。突然间,您的构建机器会抛出这些“无法转换”的消息,您会想知道发生了什么错误。另一个普遍存在的问题是,当您有一个团队的开发人员在解决方案上工作时:他们都不知不觉地“修改”此文件。
因此,答案似乎是不将licenses.licx文件放在源代码控制下。(KB文章)
但是,这个问题的解决方案又引起了另一个警告:如果团队中的一名开发人员向表单添加需要许可证的新控件,则会在其本地licenses.licx文件中添加一行,并且可能不会在源代码控制中反映出来。砰,您的构建机器无法构建,Joe(添加了该控件的人)必须为团队买甜甜圈,直到其他人破坏了构建。
很遗憾,我没有好的
我们使用自定义的签入策略(TFS),如果在签入列表中出现,则明确将其内容置空。