我的存储库中有以下文件夹结构:
- 来源
后端
- Module1。Api =比;可发布的
- Module1.Api.csproj和所有其他项目文件
- 其他项目文件夹
- Module1.Api.sln
- Module1。Api =比;可发布的
前端
- Module1。用户界面
- Module1.UI.csproj和所有其他项目文件
- 其他项目文件夹
- Module1.UI.sln
- Module1。用户界面
在我们的管道中,有一个步骤是为后端生成所需的发布包服务。
- task: DotNetCoreCLI@2
displayName: DotNet Publish
inputs:
command: publish
publishWebProjects: True
arguments: '--configuration $(BuildConfiguration) --output $(Build.ArtifactStagingDirectory) --runtime win-x64 --self-contained true'
zipAfterPublish: False
projects: 'Source/Backend/**/*.csproj' ##FILTER BACKEND ONLY
然而,项目是一个通配符,只发布后端(projects: 'Source/Backend/**/*.csproj'
),它仍然运行dotnet publish
Module1.UI.csproj这是错误的,因为它是在Source/Frontend
文件夹。
我错过什么了吗?
真正有用的是下面的注释:
PublishWebProjects属性必须设置为false允许选择一个特定的项目。如果设置为true, projects属性的值被忽略,所有找到的webprojects都会被发布。
见:https://stackoverflow.com/a/53395041
请使用工作目录
- task: DotNetCoreCLI@2
displayName: DotNet Publish
inputs:
command: publish
publishWebProjects: True
arguments: '--configuration $(BuildConfiguration) --output $(Build.ArtifactStagingDirectory) --runtime win-x64 --self-contained true'
zipAfterPublish: False
projects: '**/*.csproj' ##FILTER BACKEND ONLY
workingDirectory: 'Source/Backend'