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