如何强制DotNetCoreCLI@2构建指定的目标项目?
解决DotNetCoreCLI@2强制构建指定项目的问题
我在Azure DevOps中使用DotNetCoreCLI@2任务发布指定项目时遇到异常,任务配置如下:
- task: DotNetCoreCLI@2 inputs: command: 'publish' projects: 'orb/orb.csproj' arguments: '--configuration Release --output $(Build.BinariesDirectory)/publish_output/App_Data/jobs/triggered/orb --verbosity detailed' zipAfterPublish: false modifyOutputPath: false
预期应该构建orb/orb.csproj,但日志显示实际执行的命令却在构建另一个无关项目:
"C:\Program Files\dotnet\dotnet.exe" publish D:\a\1\s\differentProject\differentProject.csproj --configuration Release --output D:\a\1\b/publish_output/App_Data/jobs/triggered/orb --verbosity detailed
可以通过以下几种方式强制任务构建指定项目:
明确指定项目的绝对路径
直接使用$(Build.SourcesDirectory)(源代码根目录变量)拼接项目路径,避免路径解析歧义:- task: DotNetCoreCLI@2 inputs: command: 'publish' projects: '$(Build.SourcesDirectory)/orb/orb.csproj' arguments: '--configuration Release --output $(Build.BinariesDirectory)/publish_output/App_Data/jobs/triggered/orb --verbosity detailed' zipAfterPublish: false modifyOutputPath: false指定任务工作目录
在任务中添加workingDirectory参数,确保任务在源代码根目录下执行,保证相对路径的正确性:- task: DotNetCoreCLI@2 inputs: command: 'publish' projects: 'orb/orb.csproj' arguments: '--configuration Release --output $(Build.BinariesDirectory)/publish_output/App_Data/jobs/triggered/orb --verbosity detailed' zipAfterPublish: false modifyOutputPath: false workingDirectory: '$(Build.SourcesDirectory)'添加
--no-dependencies参数避免连带构建
如果问题是因为项目依赖导致连带构建了其他项目,可以在arguments中加入--no-dependencies,仅构建指定项目本身:- task: DotNetCoreCLI@2 inputs: command: 'publish' projects: 'orb/orb.csproj' arguments: '--configuration Release --output $(Build.BinariesDirectory)/publish_output/App_Data/jobs/triggered/orb --verbosity detailed --no-dependencies' zipAfterPublish: false modifyOutputPath: false检查路径拼写与项目结构
确认orb/orb.csproj确实存在于仓库根目录下,没有拼写错误(比如大小写、目录名错误),可以通过构建日志中的Working directory字段确认任务当前的执行目录,验证相对路径是否正确。
内容的提问来源于stack exchange,提问作者Alex Gordon
相关产品推荐
相关产品推荐

