首页 游戏教程 正文

framework 4.0 64位兼容问题吗?实用解决技巧大集合!

今儿上午真tm被坑惨了!项目急着要升级64位系统,结果刚把老项目拽过来编译,直接蹦出个红叉报错:"框架版本不兼容",当时气得我差点把键盘砸了。

揪罪魁祸首

我撸起袖子就开始查。先翻项目属性,果然在目标框架那栏看到个刺眼的".NET Framework 4.0"。切到生成标签页,发现平台目标这孙子默认选的是"AnyCPU",这不坑爹吗!32位系统上跑得欢,64位直接尥蹶子。

framework 4.0 64位兼容问题吗?实用解决技巧大集合!

  • 第一刀:直接把平台目标改成"x64",保存一编译——好家伙!弹窗提示"引用的库不兼容64位",跟tm报丧似的。
  • 第二刀:顺着报错摸到引用列表,果然有几个陈年旧库标着x86标签,这几个老帮菜在64位地盘上根本站不住脚。
  • 第三刀:骂骂咧咧打开nuget包管理器,把能更新的库全滚了一遍。结果两个钉子户库找不到64位版本,气得我对着屏幕竖中指。

硬核土办法

实在没招了,只能掏祖传手艺。我把那两个32位专属库单独拎出来,塞进新建的x86类库里。主项目改成"AnyCPU",同时在配置文件里加料

<runtime>

<legacyCorruptedStateExceptionsPolicy enabled="true"/>

framework 4.0 64位兼容问题吗?实用解决技巧大集合!

<loadFromRemoteSources enabled="true"/>

<UseSmallInternalThreadStacks enabled="true" />

</runtime>

这堆玄学配置怼进去,总算让主项目和x86库握手言和了。运行测试时手都在抖,生怕又崩——结果tm居然跑起来了!老古董在64位机器上喘上气了。

扫尾踩的坑

  • 部署时发现注册表路径抽风。32位库非要往Wow6432Node里钻,手动用regedit把它踹回正常位置才老实
  • 有个老控件在64位环境疯狂闪烁,发现得在程序兼容性里勾选"禁用桌面组合"才能治
  • 数据库连接字符串里混了个Provider=MSDASQL,这玩意儿在64位就是个聋子,连夜换成OleDb才通上电

折腾完瘫在椅子上灌了半壶浓茶。这堆坑爹问题总结起来就三字:别手贱!能跑的老项目千万别乱搬家,非要升级就准备好通宵填坑!

本文转载自互联网,如有侵权,联系删除

相关推荐