c# - VS 2017 .NET 4.6.2 新增 ASP.NET Core Web Application (.NET Framework) 默认为 x86 平台

标签 c# asp.net asp.net-core visual-studio-2017 runtime-identifier

为什么?

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/

相关文章:

linux - 无法使用 SYSTEMCTL 在 ubuntu 16 服务器上实现 aspnet 核心

c# - 如何使通用列表等于另一个通用列表

asp.net - 从 Azure 上的 ASP 返回到 Arduino 的 HTTP 动词无效

asp.net - 浏览IIS网站时出现 "Service Unavailable"错误

c# - 以编程方式清除 asp.net core 中的缓存配置文件

reactjs - 如何确保 React 父组件在其子组件挂载之前加载数据?

c# - 如何自动释放List中的对象?

c# - 母版页中的更新面板和子页中的 asp 文件上传

c# - 使用 Ninject 获取实例

asp.net - SlowCheetah 未在 CI 服务器上生成转换后的配置文件