博客
关于我
lc.exe 已退出 代码为 1
阅读量:796 次
发布时间:2023-01-30

本文共 1341 字,大约阅读时间需要 4 分钟。

今天在做项目的时候,同事把资源文件签出去了,我就直接强行签入,然后运行的时候出现了“lc.exe 已退出 代码为 1” 这个错误。我立刻开始上网查找原因,发现这个问题与项目中使用的第三方控件有关。

我知道项目用了DEV版本的第三方控件,并且这个控件的主使用类上定义了一个特定的属性:[LicenseProvider(typeof(LicFileLicenseProvider))]。这让我有点困惑,因为我在项目中确实使用了破解版本的第三方组件,那为什么依然存在这个问题呢?

于是我进一步研究, 发现这点很可能是因为我在开发过程中使用的是破解后的第三方组件。通常,商业组件在被破解后会失去其强名称签名。强名称签名用于区分不同的版本,特别是在引用文件的时候,签名不同的组件可能导致_compilertools_隐藏的强名称引用发生变化。

在我的项目中,Visual Studio 2008会在编译前利用lc.exe(许可编译器)来处理相关许可信息,当检测到使用 LicFileLicenseProvider 的时候,它会生成license.licx文件,这个文件包含了你使用的主使用类的名称空间、类名、文件名以及强名称签名信息。这个文件也位于Visual Studio的解决方案资源管理器中Properties文件夹里,它实际上是自动自动生成的,与项目中引用的具体版本紧密相关。

我意识到,问题的根源在于破解后的组件可能与测试版组件的引用信息不同,导致许可编译器在编译时产生冲突。因此,我需要验证一下在项目中引用的版本是否是正确的破解版本,确保破解后的组件能够正常工作。

为了解决这个问题,我尝试删除pected LES项目生成的license.licx文件,然后重新编译项目。运行时,错误并没有再次出现。不过,如果这个方法不奏效,我还需要进一步处理破解后的组件。

首先,我需要将破解后的组件转换为IL(Intermediate Language)格式,然后用ILASM工具将其重新编译成一个不带强名称签名的DLL文件。之后,我会使用_metadata.xml文件来定义推荐的强名称。这个强名称文件应该放在项目的Key文件夹里,以确保重建过程中能够正确识别和验证许可信息。

为了实现这一点,我还需要确保手动添加 kendi.asm стал的强名称签名。可以通过在build选项中添加“/key=[your_key_file.snk]”来完成这一点,这样VS2008编译时就能够正确处理破解的组件,并且避免因强名称不一致而产生的错误。

通过以上方法,我的项目终于成功编译,并且没有再次出现“lc.exe 已退出 代码为 1”的错误。问题就这样解决了,但我也意识到,在今后的项目中,要更加注意第三方组件的版本管理和破解的方法是否得到官方支持,以避免类似问题的再次发生。

总的来说,这次错误很大程度上是由引用的第三方组件版本不一致引起的。通过深入理解Visual Studio的许可编译器工作原理,并了解破解后的组件对签名处理的影响,我成功找到了解决问题的方法。这次经历让我更加了解了在开发过程中无论是第三方组件的选择,还是任何编译时的权限问题,都需要谨慎处理,必要时进行详细的调试和验证。

转载地址:http://acgyk.baihongyu.com/

你可能感兴趣的文章
laravel server error 服务器内部错误
查看>>
EnvironmentNotWritableError: The current user does not have write permissions to the target environm
查看>>
#C8# UVM中的factory机制 #S8.2.3# 重载sequence哪些情形
查看>>
java教师管理系统(ssm)
查看>>
el-select下拉框修改背景色
查看>>
ElasticSearch设置字段的keyword属性
查看>>
elasticsearch配置文件里的一些坑 [Failed to load settings from [elasticsearch.yml]]
查看>>
Elasticsearch面试题
查看>>
2024年全国程序员平均薪资排名:同样是程序员,为什么差这么多?零基础到精通,收藏这篇就够了
查看>>
2024大模型行业应用十大典范案例集(非常详细)零基础入门到精通,收藏这一篇就够了
查看>>
2024年非科班的人合适转行做程序员吗?
查看>>
2024最火专业解读:信息安全(非常详细)零基础入门到精通,收藏这一篇就够了
查看>>
2025版最新一文彻底搞懂大模型 - Agent(非常详细)零基础入门到精通,收藏这篇就够了
查看>>
Java基础:按位运算符
查看>>
Java基础:比较运算符
查看>>
Kubernetes多master节点高可用集群安装
查看>>
Kubernetes学习总结(16)—— Kubernetes 实战之部署 Redis 集群
查看>>
Kubernetes学习总结(18)—— Kubernetes 容器网络
查看>>
Kubernetes学习总结(4)——Kubernetes v1.20 重磅发布 | 新版本核心主题 & 主要变化解读
查看>>
Kubernetes学习总结(5)——Kubernetes 常见面试题汇总
查看>>