使用VSTS从多项目解决方案部署Azure Functions应用构建报错求助
解决MSBuild报错“only one project can be specified”的问题
针对你在VSTS在线构建中遇到的这个问题,我整理了几个关键的排查和解决步骤:
1. 修正MSBuild参数的格式
你之前用的t:/SomeApp_Func和t:/SomeApp.Func是错误的格式,正确的参数前缀是正斜杠+冒号(/t:)。如果是要构建指定项目的Build目标,正确的写法应该是:
/t:SomeApp.Func:Build
这里的SomeApp.Func是解决方案中你的Functions项目的项目名称(要和解决方案里显示的完全一致,包括句点),:Build指定要执行的构建目标(如果省略,默认也是Build,但加上更明确)。
2. 避免重复指定项目/解决方案
报错的核心原因通常是MSBuild同时收到了多个项目/解决方案的输入:
- 如果你的MSBuild任务的Project字段已经填了解决方案文件(比如
YourSolution.sln),那么只需要在参数里加上面的/t:SomeApp.Func:Build即可,不要在参数里再写项目路径。 - 如果你想直接构建单个项目,更简单的方式是在Project字段里直接填写
SomeApp.Func.csproj的完整相对路径(比如src/SomeApp.Func/SomeApp.Func.csproj),这时候不需要额外的/t:参数,MSBuild会直接构建这个项目。
3. 检查项目名称的准确性
有时候解决方案里的项目名称和文件夹/文件名不完全一致,你可以打开解决方案文件(.sln)查看项目的定义,比如:
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SomeApp.Func", "src/SomeApp.Func/SomeApp.Func.csproj", "{12345678-1234-1234-1234-1234567890AB}" EndProject
这里第一个引号里的SomeApp.Func就是你需要在/t:参数里使用的项目名称,必须完全匹配。
4. 附加参数优化(可选)
如果构建时遇到项目引用的问题,可以加上/p:BuildProjectReferences=false参数,避免构建该项目的依赖项(如果不需要的话),完整参数示例:
/t:SomeApp.Func:Build /p:BuildProjectReferences=false
按照这些步骤调整后,应该就能解决这个报错了。
内容的提问来源于stack exchange,提问作者Shyamal Parikh
相关产品推荐
相关产品推荐

