使用MSBuild做U-SQL持续集成时,VSTS构建服务器报Build目标不存在错误
我正在使用VSTS结合MSBuild进行U-SQL持续集成,在VSTS构建服务器上操作时遇到以下错误:
ValidateSolutionConfiguration: 正在生成解决方案配置“Debug|Any CPU”。ADLAUSQL1\ADLAUSQL1.usqlproj(0,0): 错误MSB4057: 项目中不存在“Build”目标。项目“D:\a\1\s\ADLAUSQL1.s...
问题根源
这个错误的核心原因是:U-SQL项目的MSBuild目标体系和常规.NET项目不同,它默认没有Build这个通用目标,必须使用U-SQL专用的构建目标才能正常执行。
具体解决步骤
修改MSBuild任务的目标参数
在VSTS的MSBuild任务配置里,放弃默认的Build目标,换成U-SQL专用的Compile或Deploy目标。具体操作是在MSBuild任务的「Command Line Arguments」中添加:/t:Compile如果你的CI流程需要直接部署到ADLA,就改用
/t:Deploy,同时记得补充部署所需的参数(比如ADLA账户名、资源组等,根据项目实际需求调整)。确保构建代理具备必要工具
U-SQL的MSBuild目标由Azure Data Lake Tools for Visual Studio提供,所以要确认VSTS构建代理上已安装该工具:- 若使用托管代理,选择包含Azure Data Lake Tools的镜像(比如VS 2019/2022的托管镜像,通常自带该工具);
- 若使用私有代理,手动下载安装最新版的Azure Data Lake Tools for Visual Studio即可。
检查项目配置完整性
右键U-SQL项目查看属性,确认构建配置(Debug/Release)无异常,项目的引用和依赖均正常。同时确保解决方案中的U-SQL项目没有损坏的引用情况。尝试专用构建工具(备选方案)
如果上述方法仍未解决问题,可以尝试用U-SQL专属的AzureDataLakeMSBuild.exe替代常规的MSBuild.exe。该工具的路径随VS版本略有差异,比如VS 2019的路径大致为:C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\Common7\IDE\Extensions\Microsoft\Azure Data Lake Tools for Visual Studio 2019\AzureDataLakeMSBuild.exe使用这个工具执行构建,能规避常规MSBuild的兼容性问题。
内容的提问来源于stack exchange,提问作者Arun S

