我已经使用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:
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
文件一样。
答案 0 :(得分:0)
如何通过管道UI发布自包含的dotnet核心软件包以使天蓝色的工件变干?
您可能会误解任务dotnet publish
,该任务没有用于发布nuget软件包。它曾经用来创建一个.zip
文件档案,准备发布到Web应用程序:
查看文档Deploy a web app,了解更多详细信息。
作为测试,您可以查看该.zip
的内容:
要通过管道UI将自包含的dotnet核心程序包发布到天蓝色工件,您只需要使用Copy task
和PublishBuildArtifacts task
。
之所以只选择“ netcoreapp2.2”目录的内容,是因为您在Contents
的{{1}}中使用的语法不正确,因此应将其指定为copy task
:
.nupkg
然后,在工件中:
或者,我们可以在 Contents: '**\bin\$(BuildConfiguration)\**\*.nupkg'
任务中将软件包文件夹指定为$(Build.ArtifactStagingDirectory)
:
在这种情况下,我们不需要复制任务即可将包复制到nuget pack
,只需使用任务ArtifactStagingDirectory
。
希望这会有所帮助。