c# – 对于32位或64位的构建感到困惑

前端之家收集整理的这篇文章主要介绍了c# – 对于32位或64位的构建感到困惑前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有几个项目的VS2013解决方案(一个C# WPF应用程序和类库).每个项目的“平台目标”设置为“任何cpu”.我的印象是,最终的EXE将作为64位应用程序运行在64位PC上,32位应用程序在32位PC上运行.它是否正确?我的开发电脑是64位,但是当我运行应用程序(独立或通过VS调试)时,它在任务管理器中显示为“foo.exe * 32”.这里发生了什么?

我们有一个32位机器的初级开发人员.他仍然能够打开解决方案并在VS中运行吗?

另外,一些项目引用第三方DLL.供应商提供32位和64位版本 – 哪些项目应该引用?如果我引用32位DLL,这将阻止应用程序作为64位应用程序运行?如果我参考64位版本,这是否会对32位开发人员造成问题?最终用户怎么样 – 我的安装程序需要检查操作系统版本并复制到相应的DLL中?

最后,通过NuGet引用的DLL怎么样? NuGet是否安装了32位或64位版本的DLL?如何处理32位或64位最终用户安装?

解决方法

我会尝试回答你的一些问题,因为你把这么多的捆绑成一个单一的..

我们有一个32位机器的初级开发人员.他仍然能够打开解决方案并在VS中运行吗?

是的,只要所有项目都设置为为任何cpu构建,并且在64位程序集或本机DLL上没有外部依赖关系.

如果我引用32位DLL,这将阻止应用程序作为64位应用程序运行?

是的,如果任何组件或链接的COM组件是专门针对32位CLR构建的,那么它将要求整个项目作为32位进程运行.您始终必须小心您的项目可能依赖的本机代码.

如果我参考64位版本,这是否会对32位开发人员造成问题?

是的,如果有64位程序集,32位开发人员将无法在其机器上运行该项目.

作为最后的想法,我想补充说,最终的可执行项目是否构建为任何cpu,或者是特定的32位或64位目标平台是非常重要的.

通常我发现,最终的可执行文件构建为任何cpu都可能会在运行时(Bad Image运行时异常类型)导致各种问题,除非链接的所有程序集都针对任何cpu,并且没有外部的本地依赖关系.后一种要求是最难确定的.

另一方面,为明确指定的32位或64位平台构建的最终可执行文件可以高兴地并入为任何cpu构建的其他程序集

猜你在找的C#相关文章