Visual Studio 64位应用程序编译

Visual Studio的编译选项 build下的platform有X64、Any CPU和x86。X86表示只能在32位环境下运行,X64表示只能在64位环境下运行,Any CPU表示你的程序集可以根据环境变化适应32位还是64位,但是如果你的程序集依赖于一个x86选项编译的程序集,哪么你的程序集只能选择X86进行编译,而不能选择Any CPU编译,如果使用Any CPU编译,运行就会出现如下的错误:

   Unhandled Exception: System.BadImageFormatException: Could not load file or asse mbly 'SourceCode.HostClientAPI, Version=4.0.0.0, Culture=neutral, PublicKeyToken =16a2c5aaaa1b130d' or one of its dependencies. An attempt was made to load a pro gram with an incorrect format. File name: 'SourceCode.HostClientAPI, Version=4.0.0.0, Culture=neutral, PublicKe yToken=16a2c5aaaa1b130d'

原因是如果用Any CPU编译,那么在64位机器默认的运行就是64位的,通常这情况十assembly需要调用一个32的COM库,只要用x86编译,那么程序就是以32位的程序,依靠wow64来运行的,就可以在64位系统上运行。所以,如果assembly需要使用win32库的话,那么编译选项就不能使用默认的Any CPU就需要注意了。

如果你的程序集还有调用VC++编写的程序集,如果没有安装Microsoft Visual C++ 2005/2008/SP1 Redistributable Package (x86)更新包,还会出现类似的错误:

Unhandled Exception: System.IO.FileLoadException: Could not load file or assembl y 'SourceCode.HostClientAPI, Version=4.0.0.0, Culture=neutral, PublicKeyToken=16 a2c5aaaa1b130d' or one of its dependencies. The application has failed to start because its side-by-side configuration is incorrect. Please see the application event log or use the command-line sxstrace.exe tool for more detail. (Exception from HRESULT: 0x800736B1) File name: 'SourceCode.HostClientAPI, Version=4.0.0.0, Culture=neutral, PublicKe yToken=16a2c5aaaa1b130d' ---> System.Runtime.InteropServices.COMException (0x800 736B1): The application has failed to start because its side-by-side configurati on is incorrect. Please see the application event log or use the command-line sx strace.exe tool for more detail. (Exception from HRESULT: 0x800736B1)

具体使用Microsoft Visual C++ Redistributable Package 的2005,2008,2008 SP1版本,取决于你开发的应用程序所使用Visual Studio的版本。

Microsoft Visual C++ 2008 SP1 Redistributable Package (x86)

上述问题发生在我准备在Windows Server 2008 R2 Server Core上部署应用程序所碰到的问题的总结,折腾了将近一天的时间,希望对今后碰到类似问题的同学有帮助,可以节省更多的时间。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏王清培的专栏

redisLock redis分布式锁

redis-lock redis setnx cmmand java object condition queue 条件队列 retrycount 带有重试次数...

41760
来自专栏.net core新时代

分布式中使用Redis实现Session共享(二)

  上一篇介绍了一些redis的安装及使用步骤,本篇开始将介绍redis的实际应用场景,先从最常见的session开始,刚好也重新学习一遍session的实现原...

34560
来自专栏古时的风筝

Java Spring mvc 操作 Redis 及 Redis 集群

 本文原创,转载请注明:http://www.cnblogs.com/fengzheng/p/5941953.html 关于 Redis 集群搭建可以参考我的另...

431100
来自专栏.net core新时代

分布式中Redis实现Session终结篇

  上一篇使用Redis实现Session共享方式虽然可行,但是实际操作起来却很麻烦,现有代码已经是这个样子了,总不可能全部换掉吧!好吧,这是个很实际的问题,那...

24180
来自专栏.net core新时代

nginx+iis实现负载均衡

  最近在研究分布式系统架构方面的知识,包括负载均衡,数据库读写分离,分布式缓存redis等。本篇先从负载均衡服务架构入手,关于负载均衡百度百科的定义如下:负载...

45280
来自专栏王清培的专栏

redis 简单使用总结

最近一段时间与redis接触比较频繁。发现有些东西还是工作中经常会用到的,自己也花了点时间巩固下。本篇文章主要是以总结性的方式梳理,因为redis的主题很大,任...

39590
来自专栏IMWeb前端团队

IMWebConf 2016总结

本文作者:IMWeb link 原文出处:IMWeb社区 未经同意,禁止转载 ? 9月10号,IMWeb团队在腾讯大厦成功举办了IMWebConf 2...

30760
来自专栏.net core新时代

分布式中使用Redis实现Session共享(一)

  上一篇介绍了如何使用nginx+iis部署一个简单的分布式系统,文章结尾留下了几个问题,其中一个是"如何解决多站点下Session共享"。这篇文章将会介绍如...

1.5K100
来自专栏企鹅号快讯

Reddit 如何实现大规模的帖子浏览计数

对浏览计数有四个主要要求,满足这四项要求比听起来要复杂得多。 -- Krishnan Chandra 本文导航 ◈ 计数方法 08% ◈ 总结 88% 编译自 ...

27290
来自专栏古时的风筝

Redis集群搭建与简单使用

介绍安装环境与版本 用两台虚拟机模拟6个节点,一台机器3个节点,创建出3 master、3 salve 环境。 redis 采用 redis-3.2.4 版本。...

30190

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励