Asp.net-Core
Azure Pipeline Publish:具有特定文件夾或項目的任務 DotNetCoreCLI
在執行具有以下項目/文件夾結構的 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