MSBulid编译器过程出现“lc.exe已退出,代码为-1“的解决方案

发布时间 2023-05-07 17:11:22作者: BigBom原子

这几天在查看winform旧项目的时候,发现编译过程中会出现“lc.exe已退出,代码为-1”的错误提示,导致程序无法正确编译,在网上查了一下,最后找到解决方法。

因为项目使用了Developer第三方库功能,其在组件的使用类定义了 LicenseProvider(typeof(LicFileLicenseProvider)) 这个Attribute。而VS在编译时检测到这个类的时候,会检查到组件使用的是LicFileLicenseProvider这个属性,表示有组件使用的是把许可的辅助信息保存在license.licx文件中,这个文件保存在VS中解决方案资源管理器中的Properties文件夹内。

license.licx文件的内容实际上是个引用,他保存着你使用的第三方组件主使用类的名称空间+类名+文件名+文化+PublicKeyToken信息,这个文件是自动生成的。故每次编译的时候,VS自动调用语言编译器之前会调用lc(许可编译器),如果其中的信息与你使用的组件dll中实际内容不符, 就会出现-1错误。

解决方案也比较简单:在引用了dll的项目工程中,找到Properties文件夹下的license.licx文件,删掉就可以了(注意:必须在工程内删除,如果直接在文件夹删除,工程文件仍然识别该license.licx文件,还是会报错)。