由于ASP.NET Core使用libuv,因此构建过程需要知道我们是否针对32位或64位(当使用.NET Framework而不是.NET Core时)。
当我满足于64位时,我在发布时收到以下消息:
error : The RuntimeIdentifier platform and the PlatformTarget must match.
但我觉得它们确实匹配 - 我用msbuild的<Message />
指令打印出来,他们告诉我:
1>PlatformTarget: x64
1>RuntimeIdentifier: win7-x64
实际上,错误消息似乎是由相应目标定义中的这些代码行生成的:
<NETSdkError Condition="'$(PlatformTarget)' != 'AnyCPU' and !$(RuntimeIdentifier.ToUpper().Contains($(PlatformTarget.ToUpper())))"
ResourceName =“CannotHaveRuntimeIdentifierPlatformMismatchPlatformTarget”/&gt;
(取自this GitHub issue,这些行在主语义上保持不变。)
那怎么不匹配?为什么只在出版时检查?
我认为它不会考虑Azure App Service的任何信息,尽管它也配置为64位。
有什么想法吗?
答案 0 :(得分:1)
此链接描述了一些细节:https://blogs.msdn.microsoft.com/webdev/2018/01/09/64-bit-asp-net-core-on-azure-app-service/
答案 1 :(得分:1)
我自己发现了这个问题,这是由于VS UI错误造成的。
在发布配置文件中,还有另一个RuntimeIdentifier。
我检查了这一点,但仅在VS UI和VS发布对话框中,它不一定显示实际配置的内容:如果当前应用程序是64位,并且配置了32位,那么即使显示64位,仍会配置32位。