关于.NET编译的目标平台(AnyCPU,x86,x64)

      1.关于.NET编译的目标平台(AnyCPU,x86,x64)(转) 

今天有项目的代码收到客户的反馈,要求所有的EXE工程的目标平台全部指定成x86,而所有DLL工程的目标平台全部指定成AnyCPU 

 

下面我们一起看看这个目标平台有什么作用,各选项有什么差别吧。

在VisualStudio中,在编译设置中有如下选项:

 

x86: 将程序集编译为由兼容 x86 的 32 位公共语言运行库运行。

x64: 将程序集编译为由支持 AMD64 或 EM64T 指令集的计算机上的 64 位公共语言运行库运行。

anycpu:(默认值)将程序集编译为在任意平台上运行。

Itanium: 将程序集编译为由采用 Itanium 处理器的计算机上的 64 位公共语言运行库运行。

 

具体行为如下:

在 64 位 Windows 操作系统上:

用 x86 编译的程序集将在 WOW64 下运行的 32 位 CLR 上执行。

用 x64 编译的程序集将在 64 位 CLR 上执行。

用 anycpu 编译的可执行文件将在 64 位 CLR 上执行。

用 anycpu 编译的 DLL 将在与加载它的进程相同的 CLR 上执行。

 

在 32 位 Windows 操作系统上:

用 x86或anycpu 编译的程序集将在 32 位 CLR 上执行。

用 x64 编译的程序集无法运行。

 

搞清楚这些差异以后,回过头来看看客户要求的东西,有没有道理吧。

首先有一点是知道的,客户希望程序能够在WINXP以上的各系统中运行(不管是32位还是64位)。

因此,不可能选x64,Itanium这种针对特殊处理器的也不会去选。

 

那都选择Any CPU这种默认方式有没有问题呢?

首先看看Any CPU和x86的可执行文件(EXE)在32位和64位下有什么区别吧,

Any CPU在32位下,EXE将以32位执行,而在64位下,EXE将以64位执行。而x86的话,始终以32位执行。

客户希望使用的x86,也就是不希望64位下用64位方式执行EXE程序。我分析的原因是由于系统中可能存在第三方的32位DLL,一旦使用64位执行的EXE,在调用到32位的DLL时,将无法调用。

 

而DLL,客户则希望采用Any CPU,我分析的原因是DLL的实际运行方式是受调用它的EXE所影响的,因此设为Any CPU就可以了。而如果设定为x86,虽然看似没什么问题,但其无法在64位CLR中运行了,不是太好。

 

参考资料:

http://msdn.microsoft.com/zh-cn/library/zekwfyz4(VS.80).aspx

注:以上文章虽好,但是我在做项目的时候,用any CPU编译的exe,调用64位系统上的dll的时候,总是调不起来,后来用x86编译的exe就可以调用64位系统上的dll。所以要是在64为系统上运行,用x86编译的是几乎都能运行的。



2.如果是c++程序在64位系统上运行,记得安装开发工具是要自己勾选上,默认是不安装的。



  • 8
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论
### 回答1: Microsoft .NET Framework 4.8是一个由微软开发的跨平台框架和运行时环境。它是用于开发和执行基于.NET技术的应用程序的一个重要组件。.NET Framework 4.8提供了许多功能和功能,以帮助开发人员构建强大且可靠的应用程序。 首先,.NET Framework 4.8支持多种编程语言,包括C#,Visual Basic和F#等。开发人员可以根据自己的喜好和需求选择适合的语言进行开发。 其次,.NET Framework 4.8提供了大量的类库和工具,使开发人员能够快速构建应用程序。这些类库涵盖了各种功能,如网络通信,线程管理,图形处理,数据库访问等。开发人员可以利用这些类库来简化开发过程,减少编写代码的工作量。 此外,.NET Framework 4.8还具有优秀的性能和安全性。它通过即时编译和资源管理等技术提供了高效的执行性能,并具有内置的安全机制来保护应用程序免受恶意软件和攻击的影响。 对于不同架构的计算机系统,.NET Framework 4.8提供了两个版本,即x86x64x86是32位版本,适用于运行在32位操作系统上的计算机;x64是64位版本,适用于运行在64位操作系统上的计算机。通过提供这两个版本,.NET Framework保证了其在不同计算机系统上的兼容性和可用性。 总之,Microsoft .NET Framework 4.8是一个强大且高效的开发工具,可以帮助开发人员构建各种类型的应用程序。无论是Web应用程序,桌面应用程序还是移动应用程序,.NET Framework 4.8都能提供所需的功能和性能。 ### 回答2: Microsoft .NET Framework 4.8是由微软开发的一个软件开发平台。它提供了许多编程接口和库,用于开发和执行各种类型的应用程序,包括桌面应用程序、Web应用程序、移动应用程序和云服务。 .NET Framework 4.8支持x86x64两种架构。x86是指处理器的32位版本,而x64是指处理器的64位版本。在选择安装.NET Framework 4.8时,根据计算机的处理器架构进行选择,以确保软件能够正确地在计算机上运行。 对于x86架构的计算机,安装.NET Framework 4.8 (x86)版本是必要的。这个版本是为32位操作系统和32位应用程序设计的。它提供了用于开发和运行32位应用程序所需的接口和库。 对于x64架构的计算机,安装.NET Framework 4.8 (x64)版本是必要的。这个版本是为64位操作系统和64位应用程序设计的。它提供了用于开发和运行64位应用程序所需的接口和库。 在安装.NET Framework 4.8时,需要根据计算机的架构选择正确的版本,以确保软件能够正常工作。如果安装了错误的版本,可能会导致应用程序无法运行或出现错误。 总之,Microsoft .NET Framework 4.8 (x86x64)是用于开发和执行各种类型的应用程序的软件开发平台。选择正确的版本取决于计算机的处理器架构,以确保软件能够正确地在计算机上运行。 ### 回答3: Microsoft .NET Framework 4.8是由微软公司开发的软件框架,适用于Windows操作系统。它提供了一个统一的编程模型,用于构建和运行各种类型的应用程序,包括桌面应用程序、Web 应用程序、移动应用程序和云服务。.NET Framework 4.8提供了广泛的功能和库,以支持开发人员创建高效、可靠和安全的应用程序。 .NET Framework 4.8可分为两个版本:x86x64x86版本是适用于32位操作系统的,而x64版本则适用于64位操作系统。这两个版本的主要区别在于它们所适用的系统架构不同。如果您使用的是32位操作系统,您应该选择安装x86版本。如果您使用的是64位操作系统,则可以选择安装x86x64版本,具体选择取决于您的需求。 不论您选择安装哪个版本,.NET Framework 4.8都提供了许多重要的功能和改进。它包括对异步编程模型的改进,可帮助开发人员编写更高效和响应更快的应用程序。它还提供了对新的Windows通用Windows平台应用程序 (UWP) 的支持,这意味着您可以使用.NET Framework 4.8构建在Windows操作系统各个平台上运行的应用程序。 此外,.NET Framework 4.8还提供了诸如.NET Standard 2.0和ASP.NET Core 2.0之类的重要功能和更新,以便开发人员可以更轻松地在不同的平台上构建和部署应用程序。 总而言之,Microsoft .NET Framework 4.8是一个强大且功能丰富的软件框架,为开发人员提供了构建各种类型应用程序的工具和平台。它的x86x64版本适用于不同的操作系统架构,而且提供了许多重要的功能和改进,使开发人员能够更高效、更安全地构建应用程序。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

g710710

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值