为什么?
Web 应用程序(.NET Framework)和核心 Web 应用程序(.NET Core)都面向 AnyCPU 平台。
这是一个错误还是这样做有什么值(value)?
我在 Windows 10 x64 上安装了 4/18/2017 VS 2017 更新。
Microsoft Visual Studio 企业版 2017 版本 15.1 (26403.7) 发布 VisualStudio.15.Release/15.1.0+26403.7 微软.NET框架 版本 4.6.01586
最佳答案
我想这是出于兼容性原因。 x86 可能是指您的 <RuntimeIdentifier>
在 csproj 中。
<PropertyGroup Condition="'$(TargetFramework)' == 'net462'">
<RuntimeIdentifier>win7-x86</RuntimeIdentifier>
</PropertyGroup>
需要它的原因之一是拉取 Nuget 依赖项,而 ASP.NET 核心依赖于一些 native /非托管库(=库不是用 C#/CLR 编写的,而是用 C/C++ 编写的 native 库),例如 libuv (参见 NuGet ),它是 ASP.NET Core 使用的异步套接字库。
如果它默认为 x64
那么这种应用程序无法在 x86 操作系统上恢复/运行,所以目前唯一合理的设置是 x86。
对于 .NET CLR/IL 代码,体系结构(x64 或 x86)并不重要,但对于这些外部依赖项而言却很重要。这也是为什么在隐藏以 net45
为目标的 project.json 项目时出现错误的原因。和 netstandard1.x
对于 csproj,您需要将上述 xml 代码添加到您的 csproj,以向 NuGet 提示它应该恢复哪种类型的架构。
您可以安全地将其更改为 <RuntimeIdentifier>win7-x64</RuntimeIdentifier>
,如果您和您的同事都没有在 x86 操作系统上开发项目。有关有效 RID (RuntimeIdentifiers) 的列表,请参阅 ASP.NET Core documentation .当然,对于 .NET Framework,您仅限于 win*
RID。
应该没什么好担心的,您可以将其保留为默认值。通常这无关紧要,因为大多数库都在 NuGet 包中随附了 x64 和 x86。但是可能有一些库只能在一个或其中一个上运行。
关于c# - VS 2017 .NET 4.6.2 新增 ASP.NET Core Web Application (.NET Framework) 默认为 x86 平台,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43610068/