如何通过管道UI将自包含的dotnet核心程序包发布到天蓝色的工件?

时间:2019-08-22 05:06:28

标签: .net-core azure-devops nuget-package self-contained

我已经使用dotnet core创建了一个应用程序。我将其构建为一个独立的程序包。我试图使用管道UI将其发布到Azure工件服务器。我已经能够成功构建独立的程序包,并且能够成功地将其发布到发行版中。我还无法弄清楚如何获取NuGet pack命令(以及随后的Nuget推送)来拾取自包含的软件包,并将其作为可下载的软件包放置在工件服务器上。

这是我的发布任务的YAML:

steps:

- task: DotNetCoreCLI@2

  displayName: 'dotnet publish'

  inputs:

    command: publish

    publishWebProjects: false

    projects: '**/TelemetryReceiver.csproj'

    arguments: '-c release -r win-x64 --self-contained true'

以下是要复制以构建登台任务的YAML:

您的构建管道引用了“ BuildConfiguration”变量,您已选择在队列时间对其进行设置。创建或编辑此YAML文件的构建管道,在“变量”选项卡上定义变量,然后选择使其在队列时间可设置的选项。参见https://go.microsoft.com/fwlink/?linkid=865971

steps:

- task: CopyFiles@2

  displayName: 'Copy Files to: $(build.artifactstagingdirectory)'

  inputs:

    SourceFolder: '$(build.sourcesdirectory)'

    Contents: '**\bin\$(BuildConfiguration)\**'

    TargetFolder: '$(build.artifactstagingdirectory)'

Here is the YAML for publish:

steps:

- task: PublishBuildArtifacts@1

  displayName: 'Publish Artifact: drop'

  inputs:

    PathtoPublish: '$(build.artifactstagingdirectory)\src\TelemetryReceiver\bin\Release\netcoreapp2.2\win-x64'

And here is the YAML for the NuGet pack:

steps:

- task: NuGetCommand@2

  displayName: 'NuGet pack'

  inputs:

    command: pack

    packagesToPack: src/telemetryreceiver/telemetryreceiver.csproj

    versioningScheme: byPrereleaseNumber

在复制步骤中,日志指示完整的自包含软件包确实已复制到“ \ src \ TelemetryReceiver \ bin \ Release \ netcoreapp2.2 \ win-x64”。但是最后一个软件包是从工件服务器下载的,它只是获取“ netcoreapp2.2”目录的内容。

我对“ dotnet publish”和“ NuGet pack”任务之间的联系感到困惑。好像两个人都独立评估.csproj文件一样。

1 个答案:

答案 0 :(得分:0)

  

如何通过管道UI发布自包含的dotnet核心软件包以使天蓝色的工件变干?

您可能会误解任务dotnet publish,该任务没有用于发布nuget软件包。它曾经用来创建一个.zip文件档案,准备发布到Web应用程序:

查看文档Deploy a web app,了解更多详细信息。

作为测试,您可以查看该.zip的内容:

enter image description here

要通过管道UI将自包含的dotnet核心程序包发布到天蓝色工件,您只需要使用Copy taskPublishBuildArtifacts task

之所以只选择“ netcoreapp2.2”目录的内容,是因为您在Contents的{​​{1}}中使用的语法不正确,因此应将其指定为copy task

.nupkg

然后,在工件中:

enter image description here

或者,我们可以在 Contents: '**\bin\$(BuildConfiguration)\**\*.nupkg' 任务中将软件包文件夹指定为$(Build.ArtifactStagingDirectory)

enter image description here

在这种情况下,我们不需要复制任务即可将包复制到nuget pack,只需使用任务ArtifactStagingDirectory

希望这会有所帮助。