为什么?
(.NET框架)和(.NET核心)都是针对AnyCPU平台的。
这是一个错误,还是有什么价值这样做?
我在Windows 10 x64上,安装了2017年4月18日和2017年的更新。
MicrosoftVisualStudioEnterprise2017版本15.1 (26403.7)发布VisualStudio.15.Release.15.1.0+26403.7 Microsoft版本4.6.01586
发布于 2017-04-25 12:15:11
我想是因为兼容性的原因吧。x86可能在csproj中引用您的<RuntimeIdentifier>。
<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项目中出现错误,这些项目的目标是net45和netstandard1.x到csproj,您需要将上面的xml代码添加到csproj中,以提示NuGet应该恢复哪种类型的体系结构。
如果您和您的任何同事都没有在<RuntimeIdentifier>win7-x64</RuntimeIdentifier>操作系统上开发该项目,您可以安全地将其更改为x86。有关有效RID (RuntimeIdentifiers)的列表,请参见ASP.NET Core 文档。当然,对于.NET框架,您只限于win* RID。
它应该没有什么可担心的,您可以在默认情况下保留它。通常这并不重要,因为大多数库都是在x64包和x86包中附带的。但是,可能有一些库只能运行在一个或其中一个。
https://stackoverflow.com/questions/43610068
复制相似问题