在与 MSbuild 持续集成的项目中不存在目标“构建”,用于 U-SQL

The target “Build” does not exist in the project working with Continuous integration with MSbuild for U-SQL

我正在使用 MSBuild for U-SQL 与 vsts 持续集成,引用 link:https://blogs.msdn.microsoft.com/azuredatalake/2017/10/24/continuous-integration-made-easy-with-msbuild-support-for-u-sql-preview/

但我在使用 VSTS 构建服务器时遇到以下问题

验证解决方案配置: 构建解决方案配置 "Debug|Any CPU"。 ADLAUSQL1\ADLAUSQL1.usqlproj(0,0):错误 MSB4057:项目中不存在目标 "Build"。 项目 "D:\a\s\ADLAUSQL1.sln" (1) 正在节点 1(默认目标)上构建 "D:\a\s\ADLAUSQL1\ADLAUSQL1.usqlproj" (2)。 D:\a\1\s\ADLAUSQL1\ADLAUSQL1.usqlproj:错误 MSB4057:项目中不存在目标 "Build"。 完成构建项目 "D:\a\s\ADLAUSQL1\ADLAUSQL1.usqlproj"(默认目标)——失败。 完成构建项目 "D:\a\s\ADLAUSQL1.sln"(默认目标)——失败。 构建失败。 "D:\a\s\ADLAUSQL1.sln"(默认目标)(1) -> "D:\a\s\ADLAUSQL1\ADLAUSQL1.usqlproj"(默认目标)(2) -> D:\a\1\s\ADLAUSQL1\ADLAUSQL1.usqlproj:错误 MSB4057:项目中不存在目标 "Build"。 0 条警告 1 个错误

我的构建参数是 - /p:USQLSDKPath=$(Build.SourcesDirectory)/USQLMSBuild/packages/Microsoft.Azure.DataLake.USQL.SDK.1.3.180223/build/runtime /p:USQLTargetType=SyntaxCheck /p:DataRoot=$(Build.SourcesDirectory)

任何帮助将不胜感激。如果您需要任何进一步的信息,请告诉我。

要解决此问题,请检查以下几个方面:

  1. usql项目可以用msbuild构建成功 首先,您应该确保您的项目可以在您的本地机器上成功构建。然后在 VSTS 中构建。

  2. 检查 MSBuild 参数

    假设你的 repo 中的项目结构如下:

    root repo
        |___ADLAUSQL1.sln
        |___ADLAUSQL1
               |___ADLAUSQL1.usqlproj
               |___...
    

    那么您应该将 USQLSDKPath 指定为 $(Build.SourcesDirectory)/ADLAUSQL1/packages/Microsoft.Azure.DataLake.USQL.SDK.1.3.180223/build/runtime

    注意: Microsoft.Azure.DataLake.USQL.SDK.1.3.180223 表示您在项目中安装 Microsoft.Azure.DataLake.USQL.SDK 包的版本 1.3.180223。

  3. 正确选择项目的VS版本

    并确保您使用正确的 VS 版本进行构建。由于您使用的是托管代理,请根据您的要求select托管代理或托管VS2017代理:

    • 如果你想用 VS2015 构建你的项目,你应该 select 托管代理。
    • 如果您想使用 VS2017 构建项目,您应该改用 Hosted VS2017 代理。