c# - ASP.NET MVC;编译到 x64 与 64 位的任何 CPU,有什么区别?
问题描述
我正在运行 Visual Studio 2017、ASP.NET 4.7 和 MVC 5,用于针对 IIS Express 和 Azure App Services 进行开发。
它目前是 32 位的。我想将其转换为 64 位
我看到 2 个选项:
通过“活动”选项卡在解决方案的配置中显式设置
x64
。通过“活动”选项卡在解决方案的配置中显式设置
AnyCPU
。
我已将 IIS Express 设置为 64 位,并将 Azure 应用服务实例设置为 64 位。
我觉得 2) 是最佳实践,因为将获取 Web 服务器目标位数。
如果这有所作为,可能会有一些第三方 32 位 dll 正在使用中。
谢谢。
解决方案
如果您的项目仅使用托管 DLL 或 Nuget 包,那么任何 CPU 都可以。AnyCPU 意味着在运行时它将根据您的 CPU 位数决定 64 位或 32 位。
现在,如果您明确想要告诉您的程序应该在 32 位模式或 64 位模式下运行,那么您必须选择该特定配置文件。
例如:我使用的是非托管 DLL,它是专门为 64 位编写的,那么 AnyCPU 会产生问题,因为它不是在编译时决定的。32位也一样。在这里,我们明确地尝试告诉它必须在特定的比特数配置文件中运行。
在 IIS 级别也可以使用此配置,就像您可以将 32 位 dll 设置为在应用程序池级别运行一样。
评论后更新。
- 如果您为应用服务寻找 32 位实例,那么只有少数几个。免费和共享。大多数都是64位的。
注意:1.在现实生活中我也遇到过azure应用依赖32位而我们的层是64位的问题。2.如果您继续选择VM,那么您将获得所有选项。
推荐阅读
- angular - Angular 9+ PWA 指纹/faceid 集成
- python - 当我们已经匹配关键点时,为什么我们需要使用 RANSAC?
- java - Spring-Boot:用于重定向的 Web 过滤器
- python - Django最快的方法来查询从表中获取行中的项目列表
- django - Django:显示数据库信息以匹配表单?ValueError: .. 没有返回 HttpResponse 对象。它返回 None 而不是
- linux - 设置 Windows Pycharm 以在我的 linux 服务器上使用 Git
- react-native - 在 React Native Web 上编译失败
- android - UI Thread 和运行 TCP Client 的 Worker 线程之间的持续数据传输
- javascript - 获取“不允许的方法:/users/update_contact/”
- laravel - 在laravel中查询相关模型表的所有内容