【问题标题】:How do you get KUDU to use MSBuild 15如何让 KUDU 使用 MSBuild 15
【发布时间】:2019-09-01 11:01:40
【问题描述】:
Microsoft.Net.Compilers is only supported on MSBuild v15.0 and above

无论 KUDU 的自动检测工具是什么,它总是选择 14

有没有办法强制它选择 15?

【问题讨论】:

    标签: azure msbuild kudu


    【解决方案1】:

    默认情况下不使用 msbuild 15。您可以使用它,只需对 Kudu 脚本稍作修改即可。

    这是一个使用 msbuild 15 进行恢复、构建和发布的示例*。

    :: 1. Restore nuget packages
    call :ExecuteCmd nuget.exe restore "%DEPLOYMENT_SOURCE%\BACON.sln" -MSBuildPath "%MSBUILD_15_DIR%"
    IF !ERRORLEVEL! NEQ 0 goto error
    
    :: 2. Build and publish
    call :ExecuteCmd "%MSBUILD_15_DIR%\MSBuild.exe" "%DEPLOYMENT_SOURCE%\BACON.WEB.csproj" /p:DeployOnBuild=true /p:configuration=Release /p:publishurl="%DEPLOYMENT_TEMP%" %SCM_BUILD_ARGS%
    IF !ERRORLEVEL! NEQ 0 goto error
    

    * BACON.sln & BACON.WEB.csproj 更改为您的项目文件名

    【讨论】:

      【解决方案2】:

      为您的 Web 应用添加应用设置:

      MSBUILD_PATH 的值为 %MSBUILD_15_DIR%\msbuild.exe

      这将被默认部署脚本拾取。

      【讨论】:

      • 在多次尝试此解决方案均未成功后,我发现必须在部署中心选项完成/保存之前添加此应用设置密钥。在你的 repo 已经连接之后添加密钥是行不通的。
      • 它是被 Kudu 构建脚本拾取的,所以你需要重新部署(或者确实在你第一次部署之前设置它)。
      • 这个解决方案非常适合我。我必须添加应用设置,然后重新部署失败的部署。
      【解决方案3】:

      msbuild 15 现在在 Azure 中可用,但默认情况下您需要添加自定义部署脚本来覆盖 Kudu 的项目检测逻辑。

      正如 watashiSHUN 所述,您可以添加如下内容:

      nuget restore "%DEPLOYMENT_SOURCE%\{SolutionPath}"
      "%MSBUILD_PATH%" {MSBuildArguments}
      

      这里是github中的templateissue

      【讨论】:

        猜你喜欢
        • 2017-06-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-10-16
        • 2020-11-22
        • 1970-01-01
        • 1970-01-01
        • 2017-08-07
        相关资源
        最近更新 更多