首页 > 解决方案 > ASP.NET MVC;编译到 x64 与 64 位的任何 CPU,有什么区别?

问题描述

我正在运行 Visual Studio 2017、ASP.NET 4.7 和 MVC 5,用于针对 IIS Express 和 Azure App Services 进行开发。

它目前是 32 位的。我想将其转换为 64 位

我看到 2 个选项:

  1. 通过“活动”选项卡在解决方案的配置中显式设置x64

  2. 通过“活动”选项卡在解决方案的配置中显式设置AnyCPU

我已将 IIS Express 设置为 64 位,并将 Azure 应用服务实例设置为 64 位。

我觉得 2) 是最佳实践,因为将获取 Web 服务器目标位数。

如果这有所作为,可能会有一些第三方 32 位 dll 正在使用中。

谢谢。

标签: c#asp.netasp.net-mvcazure-web-app-service

解决方案


  1. 如果您的项目仅使用托管 DLL 或 Nuget 包,那么任何 CPU 都可以。AnyCPU 意味着在运行时它将根据您的 CPU 位数决定 64 位或 32 位。

  2. 现在,如果您明确想要告诉您的程序应该在 32 位模式或 64 位模式下运行,那么您必须选择该特定配置文件。

    例如:我使用的是非托管 DLL,它是专门为 64 位编写的,那么 AnyCPU 会产生问题,因为它不是在编译时决定的。32位也一样。在这里,我们明确地尝试告诉它必须在特定的比特数配置文件中运行。

  3. 在 IIS 级别也可以使用此配置,就像您可以将 32 位 dll 设置为在应用程序池级别运行一样。

评论后更新。

  1. 如果您为应用服务寻找 32 位实例,那么只有少数几个。免费和共享。大多数都是64位的。

注意:1.在现实生活中我也遇到过azure应用依赖32位而我们的层是64位的问题。2.如果您继续选择VM,那么您将获得所有选项。


推荐阅读