昨天从win8.1升级到win10之后, 一切还算顺利, 就是升级时间比较长. 但是快下班的时候 遇到一个问题, 是之前在win8.1上没遇到的, 首先代码win8.1 vs2013 上跑的时候一切正常, 但是在win10 vs2013上就出现问题了, 就是标题上的这个问题 "LC.exe exited with code -1".
google上搜了好久, 试过一些解决方法都不是很成功, 最后在一个msdn的求助贴上找到了解决方法, 特此分享一下.
解决方案
首先, 看错误提示类型就知道是客户端程序, 所以本项目是wpf客户端程序, 这个问题是编译时就出错了, LC.exe 在 Microsoft Visual Studio 12.0\VC\bin 目录下, 看位置应该是编译C/C++用的, 所以应该是编译wpf的时候要调用一些c的组件. 然后编译出错了. 因为win8.1下没有问题, 所以是迁移到win10上出的问题.
因为vs不是重新安装的, 也是升级win10的时候自动迁移的, 所以不知道是不是vs在迁移过程中出现的问题, 要排除这个方法很简单, 重装一下就好了, 但是我不想花那么长时间, 所以先把这个问题搁下, 假设vs在迁移过程中没有出现问题那么又是哪里的问题呢? 代码兼容性? 不大可能, 因为都是跑在framework上的, 这个微软犯错的可能性不大.而且很难找出来. 会不会是LC.exe 出了问题? 我打开控制台, 用它编译了一个c程序 没有问题. 然后就没有头绪了, 我打开项目的属性, 修改了一下编译cpu类型, 然后失败, 然后又修改了其他的一些设置, 没用. 仔细检查了一下项目, 没有发现可疑的文件, 只好求助google. 遗憾的是并没有找到和我一模一样的问题, 大部分虽然也是LC.exe 的错误但是返回的错误类型不一样. 也试了一些解决方法, 但是没用. 然后就发现了这个答案: https://social.msdn.microsoft.com/Forums/vstudio/en-US/f8f4590f-cf5e-4593-8848-960fa460aa07/lcexe-with-msbuildexe?prof=required 虽然问题不一样, 但是都是迁移到另外一个环境时出现的问题, 然后我就发现 我的项目里面也有一个 *.licx文件, 这个文件是一个报表第三方插件引入时自动生成的, 于是尝试着把它排除项目, 然后编译. 成功了.
事后总结
虽然之前也预料过升级系统可能会导致现在的软件出现一些莫名其妙的问题, 有心理准备, 但是遇到了还是觉得心有余悸, 所幸的是比较幸运, 并没有遇到什么毁灭性的, 不可修复的问题. 但是在软件开发过程中升级系统, 还是要慎重一些, 能不升级就不升级, 个人用的电脑可以随意折腾, 项目用的, 一定要保持稳定, 切记..