VS错误为“lc.exe已退出,代码为-1“的解决方案

发布时间 2023-07-19 16:58:23作者: 平常xin

昨天入职一家新公司,做智能制造业。

    发给我一个项目,项目跑不起来。 项目中缺少很多组件,花费了2个小时,把组件都找了一下。

    编译不通过,错误为lc.exe已推出,代码为-1.

    之前有没有遇到这样的问题,也记不清楚了,上网查寻一下,原因是项目中使用了第三方组件(Developer Express v2011)造成的,分享如下:

     这个第三方组件是个商业组件,他在组件的主要使用类定义了 LicenseProvider(typeof(LicFileLicenseProvider))这个Attribute。

    VS在编译时检测到这个类的时候,会检查到组件使用的是LicFileLicenseProvider这个属性,表示有组件使用的是把许可的辅助信息保存在license.licx文件中,这个文件保存在vs中解决方案资源管理器中的properties文件夹内。

  这个文件的内容实际上是个引用,他保存着你使用的第三方组件主使用类的名称空间+类名+文件名+文件+PublicKeyToken信息,这个文件是自动生成的。

  如果这个信息与你使用的组件dll中的实际内容不匹配,则lc.exe就会出现这个错误信息。 这个信息出现的原因是你在项目中使用了商业组件的测试版,而在发布的时候使用的是哪个商业组件的破解版。

    大部分的商业组件经过破解的时候,强名称签名就会消失,所以破解的组件与原来的测试版组件的引用信息是完全不同的。 故每次编译的时候,VS自动调用语言编译器之前会调用lc(许可编译器),就会出现-1错误。

第一种解决方法:
 1.就是把ProPerties文件下的license。licx 删除掉,重新编译。

    2.如果还出现这个问题的话, 必须将你的破解版的哪个组件使用lidism给翻译成il语言,然后用ilasm重新编译成dll,在编译的时候加入  /key=[你的强名称文件].snk 参数,自己加入强名称签名,然后使用vs重新编译,就可以成功了。

 注意:我原来也是在Properties文件下删除license.licx,编译,问题依旧,后来是在开发项目界面中的解决方案资源管理器中的Properties展开项下面把license.licx删除掉,重新编译,就好了。网上大部分给出的解决方案都是如此,但是这种方法治标不治本,只能暂时解决问题,下面介绍第二种方法:

第二种方法:

 只要右键解决方案,安装名为EmptyLicensesLicx的NuGet包即可

1.

 2.安装Nuget包

3.编译运行
   编译成功之后,就可以了。

 

 

注释:

express.urlencoded 是 Express 框架中间件的一种,它用于解析 HTTP 请求体中的 URL-encoded 格式的数据,即 Content-Type 为 application/x-www-form-urlencoded 的数据。这种数据格式通常用于 HTML 表单提交数据,例如通过 POST 请求将表单数据提交给服务器。使用 express.urlencoded 中间件可以方便地将这种数据解析成 JavaScript 对象,以便在 Express 应用程序中处理和使用。