如何发布 .NET "Release" 神器?

How to publish .NET "Release" artifact?

我需要在 MSBuild“Release”的发布任务中为根 file/folder 指定什么?

.NET 版本基本上是二进制文件吗?因为对于 AngularOutput 构建,我必须指定 AngularOutput 的路径,但是对于 .NET 版本,我不确定那是什么路径,我认为它是整个项目,这意味着......它的二进制文件?

预期的工件:

更新: 根据 Kevin 的 YAML 生成的工件:

inside _PublishedWebsites


更新 3 之后,当 运行 在 windows 代理上时:

更新#4:使用 VSBuild

steps:
- task: VSBuild@1
  displayName: '.Net build | Build solution'
  inputs:
    solution: 'Project123/*.csproj'
    msbuildArgs: '/p:DeployOnBuild=true /p:WebPublishMethod=Package /p:PackageAsSingleFile=true /p:SkipInvalidConfigurations=true /p:DesktopBuildPackageLocation="$(build.artifactstagingdirectory)\WebApp.zip" /p:DeployIisAppPath="Default Web Site"'
    platform: AnyCPU
    configuration: Release
    msbuildArchitecture: x64

结果一样,放在长路径:

update#5:改用 /p:PublishProfile=Project123.pubxml MSBuild arg,并在 [=88= 上使用 运行 ] 代理,构建完成得很好,但这次我收到发布任务的警告:

##[warning]Directory 'D:\a\a' is empty. Nothing will be added to build artifact 'Release'.

我尝试将 /p:OutputPath=$(build.artifactstagingdirectory) 添加到发布配置文件 arg 旁边的 MSBuild args,结果与我之前发布的相同:

备注:

实际上我们甚至需要 /p:DeployOnBuild=true?我知道那是部署,但我认为我们不希望或不应该在管道中进行部署,因为我们有一个版本专门用于将已发布的工件部署到应用程序服务。

What do i need to specify for the root file/folder in publish task for MSBuild "Release"?

当您使用 Msbuild 任务构建项目时,输出文件默认保存在 Bin 文件夹。例如:$(build.sourcesdirectory)/Projectname/bin.

根据您项目的结构,具体路径可能不同。

我建议您可以在 Msbuild 任务中添加 msbuild 参数(例如 /p:OutputPath=$(build.artifactstagingdirectory))。

例如:

在这种情况下,您可以将特定路径设置为输出路径。这将使您更容易存档和发布工件。

更新:

Ubuntu代理人:

如果我不设置 msbuild arg,输出文件将显示在 bin 文件夹中:

当我添加 msbuild arg 时,它会将文件上传到目标路径:

它们具有相同的工件内容。

更新2:

您可以尝试以下示例来为 Azure APP 服务创建包。

经典:

Yaml:

steps:
- task: NuGetToolInstaller@0
  displayName: 'Use NuGet 4.4.1'
  inputs:
    versionSpec: 4.4.1

- task: NuGetCommand@2
  displayName: 'NuGet restore'
  inputs:
    restoreSolution: Sample.sln

- task: MSBuild@1
  displayName: 'Build solution Sample.sln'
  inputs:
    solution: Sample.sln
    platform: '$(BuildPlatform)'
    configuration: Release
    msbuildArguments: '/p:OutputPath=$(build.artifactstagingdirectory)'

- task: ArchiveFiles@2
  displayName: 'Archive $(Build.ArtifactStagingDirectory)'
  inputs:
    rootFolderOrFile: '$(Build.ArtifactStagingDirectory)'

- task: PublishBuildArtifacts@1
  displayName: 'Publish Artifact'
  inputs:
    PathtoPublish: '$(build.ArtifactStagingDirectory)/$(Build.BuildId).zip'
  condition: succeededOrFailed()

结果:

更新3:

steps:
- task: NuGetToolInstaller@0
  displayName: 'Use NuGet 4.4.1'
  inputs:
    versionSpec: 4.4.1

- task: NuGetCommand@2
  displayName: 'NuGet restore'
  inputs:
    restoreSolution: Sample.sln

- task: MSBuild@1
  displayName: 'Build solution Sample.Web/Sample.Web.csproj'
  inputs:
    solution: Sample.Web/Sample.Web.csproj
    platform: '$(BuildPlatform)'
    configuration: Release
    msbuildArguments: '/p:DeployOnBuild=true /p:WebPublishMethod=Package /p:PackageAsSingleFile=true /p:SkipInvalidConfigurations=true /p:DesktopBuildPackageLocation="$(build.artifactstagingdirectory)\WebApp.zip" /p:DeployIisAppPath="Default Web Site"'


- task: PublishBuildArtifacts@1
  displayName: 'Publish Artifact: drop'
  inputs:
    PathtoPublish: '$(Build.ArtifactStagingDirectory)'