ASP.NET MVC;编译为64位的x64与anyCPU,有区别吗?

时间:2018-10-24 00:12:59

标签: c# asp.net asp.net-mvc azure-web-sites

我正在运行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 App Service实例设置为64位。

我认为2)是最佳实践,因为将提高Web服务器目标位数。

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

谢谢。

1 个答案:

答案 0 :(得分:1)

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

  2. 现在,如果您明确希望告诉您的程序应该以32位模式还是64位模式运行,则必须选择该特定配置文件。

    例如:我使用的是非托管DLL,它是专门为64bit编写的,因此AnyCPU将产生问题,因为它不是在编译时决定的。同样适用于32bit。在这里,我们明确尝试告诉它必须在特定的位配置文件中运行。

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

评论后更新。

  1. 如果您要为App Service寻找32位实例,则只有很少一部分。免费和共享。大多数都是64位的。

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