无法将ASP.NET Core部署到针对Framework上的x64的Azure App Services

时间:2018-01-31 15:39:03

标签: asp.net-core

由于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位。

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

答案 1 :(得分:1)

我自己发现了这个问题,这是由于VS UI错误造成的。

在发布配置文件中,还有另一个RuntimeIdentifier。

我检查了这一点,但仅在VS UI和VS发布对话框中,它不一定显示实际配置的内容:如果当前应用程序是64位,并且配置了32位,那么即使显示64位,仍会配置32位。