由于我不知道 .csproj 配置,因此仅提供基于屏幕截图的解决方法。
在这个工件中不需要这个 Angular 文件夹
工件中不需要这些 Web.Debug 和 Web.Release
通过以下脚本添加任务电源外壳并删除文件夹和文件
#Delete Angular folder and files
- task: PowerShell@2
inputs:
targetType: 'inline'
script: |
Remove-Item ''$(Build.ArtifactStagingDirectory)/_PublishedWebsites/Project123/Angular''
Remove-Item ''$(Build.ArtifactStagingDirectory)/_PublishedWebsites/Project123/Web.Debug.configure''
Remove-Item ''$(Build.ArtifactStagingDirectory)/_PublishedWebsites/Project123/Web.Release.configure''
此处不需要那些 dll、.pdb、.xml 和 .configure 文件。
这里需要有一个由 Angular 构建任务生成的“Bundles”目录
检查此复制文件任务,这些文件在文件夹 Project123/Bundles 中,对吗?
- task: CopyFiles@2
displayName: 'Copy Files to: $(Build.ArtifactStagingDirectory)'
inputs:
SourceFolder: Project123/Bundles
TargetFolder: '$(Build.ArtifactStagingDirectory)'
我们需要更改复制文件任务,如下所示:
- task: CopyFiles@2
displayName: 'Copy Files to: $(Build.ArtifactStagingDirectory)'
inputs:
SourceFolder: Project123/Bundles
TargetFolder: '$(Build.ArtifactStagingDirectory)/_PublishedWebsites/Project123/Bundles'
它将这些文件保存在文件夹 Bundles 而不是根目录中。
此 AngularOutput 文件夹需要位于上方“Project123”文件夹内的“Bundles”目录下
我们可以将文件夹复制到 project123 文件夹,然后发布工件。
- task: CopyFiles@2
inputs:
SourceFolder: '$(Build.ArtifactStagingDirectory)/AngularOutput'
Contents: '**'
TargetFolder: '$(Build.ArtifactStagingDirectory)/_PublishedWebsites/Project123/AngularOutput'
您可以在 YAML 构建下运行并检查结果。
pool:
name: Azure Pipelines
demands:
- npm
- msbuild
steps:
- task: Npm@1
displayName: 'npm install'
inputs:
workingDir: Project123/Angular
verbose: false
- task: Npm@1
displayName: 'npm custom: angular build'
inputs:
command: custom
workingDir: Project123/Angular
verbose: false
customCommand: 'run-script build --prod --extractCss'
- task: NuGetCommand@2
displayName: 'NuGet restore'
- task: MSBuild@1
displayName: '.Net build'
inputs:
solution: 'Project123/*.csproj'
msbuildArchitecture: x64
configuration: Release
msbuildArguments: '/p:OutputPath=$(Build.ArtifactStagingDirectory)'
- task: CopyFiles@2
displayName: 'Copy Files to: $(Build.ArtifactStagingDirectory)'
inputs:
SourceFolder: Project123/Bundles
TargetFolder: '$(Build.ArtifactStagingDirectory)/_PublishedWebsites/Project123/Bundles'
#Delete Angular folder and files
- task: PowerShell@2
inputs:
targetType: 'inline'
script: |
Remove-Item ''$(Build.ArtifactStagingDirectory)/_PublishedWebsites/Project123/Angular''
Remove-Item ''$(Build.ArtifactStagingDirectory)/_PublishedWebsites/Project123/Web.Debug.configure''
Remove-Item ''$(Build.ArtifactStagingDirectory)/_PublishedWebsites/Project123/Web.Release.configure''
- task: CopyFiles@2
inputs:
SourceFolder: '$(Build.ArtifactStagingDirectory)/AngularOutput'
Contents: '**'
TargetFolder: '$(Build.ArtifactStagingDirectory)/_PublishedWebsites/Project123/AngularOutput'
- task: PublishBuildArtifacts@1
displayName: 'Publish Artifact: Release'
inputs:
ArtifactName: Release
更新1
如果问题是删除文件夹和文件,请按如下方式更新 power shell 脚本,然后重试。
#Delete Angular folder and files
- task: PowerShell@2
inputs:
targetType: 'inline'
script: |
Remove-Item -Path $(Build.ArtifactStagingDirectory)/_PublishedWebsites/Project123/Angular -Recurse -Force
Remove-Item -Path $(Build.ArtifactStagingDirectory)/_PublishedWebsites/Project123/Web.Debug.configure -Recurse -Force
Remove-Item -Path $(Build.ArtifactStagingDirectory)/_PublishedWebsites/Project123/Web.Release.configure -Recurse -Force
和测试结果:
