错误 MSB4086:尝试对计算结果为“”而不是数字的“$(MSBuildVersion)”进行数字比较

error MSB4086: A numeric comparison was attempted on "$(MSBuildVersion)" that evaluates to "" instead of a number

尝试使用 Azure Kudu 部署项目(从 BitBucket 存储库读取)我在 Azure 门户的部署中心收到以下错误...

5 个月前 Microsoft.Net.Compilers NuGet package. The only version that worked was 3.0.0 的所有最新版本都发生了此错误。

有人知道这是什么原因吗? Azure Kudu 还没有更新吗?

Command: "D:\home\site\deployments\tools\deploy.cmd"
Handling .NET Web Application deployment.
MSBuild auto-detection: using msbuild version '14.0.23107.0 built by: D14REL' from 'D:\Program Files (x86)\MSBuild.0\Bin'.
Restoring NuGet package Microsoft.Net.Compilers.3.1.1.
  GET https://api.nuget.org/v3-flatcontainer/microsoft.net.compilers/3.1.1/microsoft.net.compilers.3.1.1.nupkg
  OK https://api.nuget.org/v3-flatcontainer/microsoft.net.compilers/3.1.1/microsoft.net.compilers.3.1.1.nupkg 937ms
Installing Microsoft.Net.Compilers 3.1.1.
Adding package 'Microsoft.Net.Compilers.3.1.1' to folder 'D:\home\site\repository\packages'
Added package 'Microsoft.Net.Compilers.3.1.1' to folder 'D:\home\site\repository\packages'

NuGet Config files used:
    D:\local\UserProfile\AppData\Roaming\NuGet\NuGet.Config

Feeds used:
    D:\home\.nuget\
    https://api.nuget.org/v3/index.json

Installed:
    1 package(s) to packages.config projects
D:\home\site\repository\packages\Microsoft.Net.Compilers.3.1.1\tools\Microsoft.Managed.Core.targets(63,60): error MSB4086: A numeric comparison was attempted on "$(MSBuildVersion)" that evaluates to "" instead of a number, in condition "$(MSBuildVersion) >= 16.1.0". [D:\home\site\repository\MyCompany\MyCompany.csproj]
Failed exitCode=1, command="D:\Program Files (x86)\MSBuild.0\Bin\MSBuild.exe" "D:\home\site\repository\MyCompany\MyCompany.csproj" /nologo /verbosity:m /t:Build /t:pipelinePreDeployCopyAllFilesToOneFolder /p:_PackageTempDir="D:\local\Tempd727f56aa60788";AutoParameterizationWebConfigConnectionStrings=false;Configuration=Release;UseSharedCompilation=false /p:SolutionDir="D:\home\site\repository\.\"
An error has occurred during web site deployment.
\r\nD:\Program Files (x86)\SiteExtensions\Kudu.10807.4030\bin\Scripts\starter.cmd "D:\home\site\deployments\tools\deploy.cmd"

### 编辑###

我也打开了an issue @Kudu GitHub repo.

我在 kudu 部署和 typescript 版本上遇到过类似的问题。基本问题似乎是 kudu 正在退出支持 Azure DevOps,因此 msbuild 的某些依赖项变得过时了。以下三个选项可能会帮助您解决问题:

  1. 切换到 Azure DevOps - 您将可以访问各种构建代理并更好地控制它们的功能,但通常它们只是更新得更快
  2. 修改您的构建脚本 - 这是 kudu 使用的脚本,您可以对其进行自定义,然后将其放入源代码管理中,请参阅 this kudu doc 了解更多信息。看起来你的目标是 msbuild 14,但我很确定 15 应该可用,你可以将你的构建脚本指向这个 and/or 进行其他调整
  3. 离线处理您的一些构建,即在提交之前 - 这是我使用 typescript 的临时解决方案,我能够转换为 JavaScript 并提交 js,这意味着我可以禁用 kudu 的 typescript 处理

深入挖掘日志中引用的目标文件并通过该文件中的各种 msbuild 条件追溯问题开始的位置也可能有所帮助。您可以通过 kudu 中的命令提示符进行探索来查看所有这些内容。