我想这是出于兼容性的原因。x86 很可能是指你<RuntimeIdentifier>
在 csproj 中的。
<PropertyGroup Condition="'$(TargetFramework)' == 'net462'">
<RuntimeIdentifier>win7-x86</RuntimeIdentifier>
</PropertyGroup>
需要它的原因之一是拉取 Nuget 依赖项,而 ASP.NET 核心依赖于一些本机/非托管库(=不是用 C#/CLR 编写的库,而是用 C/C++ 编写的本机库),例如 libuv(请参阅NuGet)这是 ASP.NET Core 使用的异步套接字库。
如果它默认为,x64
则此类应用程序无法在 x86 操作系统上恢复/运行,因此到目前为止唯一合理的设置是 x86。
对于 .NET CLR/IL 代码,体系结构(x64 或 x86)并不重要,但对于这些外部依赖项却很重要。这也是为什么当你将 project.json 项目隐蔽到 csproj 时会出错的net45
原因netstandard1.x
,你需要将上面的 xml 代码添加到你的 csproj 中,以向 NuGet 提示它应该恢复哪种类型的架构。
<RuntimeIdentifier>win7-x64</RuntimeIdentifier>
如果您和您的同事都没有在 x86 操作系统上开发项目,您可以安全地将其更改为。有关有效 RID (RuntimeIdentifiers) 的列表,请参阅 ASP.NET Core文档。当然,对于 .NET Framework,您仅限于win*
RID。
无需担心,您可以将其保留为默认值。通常没关系,因为大多数库都在 NuGet 包中附带 x64 和 x86。但是可能有一些库只能在一个或任何一个上运行。