Asp.net-Core

Azure Pipeline Publish:具有特定文件夾或項目的任務 DotNetCoreCLI

  • November 16, 2018

在執行具有以下項目/文件夾結構的 Azure Build Pipeline 時遇到問題(不需要的行為)。

我的儲存庫的根文件夾有兩個主要文件夾:

  • 前端(ASP.Net Core 2.x & Angular 7 項目)
  • 後端(ASP.Net Core 2.x)

我正在嘗試建構兩個單獨的 Azure 管道,一個用於後端,一個用於前端,因此我使用projects:參數來指定正確的路徑。

buildand命令執行良好,test僅恢復/建構/測試backend文件夾,但該publish命令正在為兩個文件夾執行:後端和前端。

這是我的 yaml 文件:

#build backend project
task: DotNetCoreCLI@2
  displayName: dotnet build --configuration $(buildConfiguration)
  name: BuildBackendProject
  inputs:
    command: build
    projects: '**/backend/**/*.csproj'
    arguments: '--configuration $(buildConfiguration)'

... #run some tests

#publish backend project
task: DotNetCoreCLI@2
  displayName: dotnet publish backend --configuration $(buildConfiguration)
  name: PublishBackendProject
  inputs:
    command: publish
    projects: '**/backend/**/*.csproj'
    publishWebProjects: True
    arguments: '--configuration $(BuildConfiguration) --output 
    $(Build.ArtifactStagingDirectory)/backend'
    zipAfterPublish: True

我嘗試了不同的文件夾路徑,但它總是執行兩個發布命令。

如果我在 CMD 中本地執行dotnet publish backend(來自 repo 的根文件夾)它可以正常工作,但顯然這不適用於 Azure Pipeline。

非常感謝任何想法或修復。

訣竅在於使用 publishWebProjects/projects 屬性。這些實際上是相互排斥的。如果publishWebProjects使用 ,projects則跳過屬性值。

文件中:

發布 Web 項目*:如果為 true,則任務將嘗試在儲存庫中查找 Web 項目並對其執行發布命令。Web 項目通過目錄中存在的 web.config 文件或 wwwroot 文件夾來標識。

因此,您可以嘗試以下程式碼進行發布:

task: DotNetCoreCLI@2
 displayName: dotnet publish backend --configuration $(buildConfiguration)
 name: PublishBackendProject
 inputs:
   command: publish
   projects: '**/backend/**/*.csproj'
   publishWebProjects: false
   arguments: '--configuration $(BuildConfiguration) --output $(Build.ArtifactStagingDirectory)/backend'
   zipAfterPublish: true

引用自:https://stackoverflow.com/questions/53342200