加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-15 17:47:21 所属栏目:百科 来源:网络整理
导读:我有几个项目的VS2013解决方案(一个C# WPF应用程序和类库).每个项目的“平台目标”设置为“任何CPU”.我的印象是,最终的EXE将作为64位应用程序运行在64位PC上,32位应用程序在32位PC上运行.它是否正确?我的开发电脑是64位,但是当我运行应用程序(独立或通过VS
我有几个项目的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构建的其他程序集

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读