关于编译平台anycpu的问题

原本以为anyCPU编译的方式可以自动适配64位和32位的系统,然后最近在做一个项目的时候发现编译平台选择的anycpu,但是程序在64位的机器上跑就直接崩溃了;一开始怀疑是oracle的问题,装了一个32位的oracle,然而问题依旧。于是开始上网查资料,谷歌了一下之后才发现这个跟依赖的程序集有关。原本依照官方文档-


-来看的话这个错误是不应该发生的。首先,使用X86进行编译的话,所有的程序都会强制转换为32位程序进行编译,而使用X64的话。则所有的程序集都会被强制转换为64位进行编译,而anycpu这是根据跑程序所安装的OS来决定进行哪种转换以及是否转换。

综上来看的话,最保险的方式是使用X86进行编译,我不知道.net把anycpu作为默认选项的原因是什么,或许是还有什么配置我没发现。长远来看的话,64位的程序肯定是优于32位程序的,由于可供使用的内存空间以及寻址空间更大,这个在很多情况下还是很有用的(比如之前在使用farpoint导出数据到excel的时候,由于但是的数据量非常大,大概6万行的样子,然后程序的卡死或者崩溃,然后就报out of memory的错误,当时上spread官网查看发现了老版本的farpoint确实存在这个错误,没办法解决。这里有的人可能会问,为毛不用新版本啊,新版本要钱啊微笑。最后尝试性地编译了一份64位版本的程序,在64位的机器上跑,结果发现TM地居然可以正常地导出来,当时就觉得64bit好像比较牛逼的样子),但是运行效率的话目测并不会有改善,如果有也只能是很小,这个运行速度主要还是跟硬盘读写、CPU和程序复杂度有关(扯的有点远了),好了。暂时就想到这些,虽然只是个无关紧要的东西,但是自己入坑了,就写出来希望看看能不能对入坑的人有点帮助。基本没写过博客,工作了,希望能继续学习,共勉。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值