.net-core - 如何通过管道 UI 将自包含的 dotnet 核心包发布到 azure 工件?
问题描述
我已经使用 dotnet core 创建了一个应用程序。我将它构建为一个独立的包。我正在尝试使用管道 UI 将其发布到 Azure 工件服务器。我已经能够成功构建自包含包,并且能够成功将其发布到 drop。我无法弄清楚如何获取 NuGet 包命令(以及后续的 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
文件,就是这样。
解决方案
如何通过管道 UI 将自包含的 dotnet 核心包发布到 azure 工件?
你可能误解了 task dotnet publish
,它不是用来发布 nuget 包的。它用于创建.zip
准备发布到 Web 应用程序的文件存档:
查看文档部署 Web 应用程序以获取更多详细信息。
作为测试,您可以查看 that 的内容.zip
:
要通过管道 UI 将自包含的 dotnet 核心包发布到 azure artifacts,您只需要使用Copy task
and PublishBuildArtifacts task
。
之所以只提取“netcoreapp2.2”目录的内容,是因为你在中的语法不正确Contents
,copy task
应该指定到.nupkg
:
Contents: '**\bin\$(BuildConfiguration)\**\*.nupkg'
然后,在工件中:
或者,我们可以$(Build.ArtifactStagingDirectory)
在nuget pack
任务中指定包文件夹:
在这种情况下,我们不需要复制任务将包复制到ArtifactStagingDirectory
,只需使用任务PublishBuildArtifacts
。
希望这可以帮助。
推荐阅读
- r - 按组使用 distinct() 并以 R 中另一列的值为条件
- linux - 使用 ed 行编辑器将行与正则表达式匹配
- flutter - 我无法使用 Flutter 中的 API 将数据从一个页面传输到另一个页面。它总是打印我初始化的数据
- javascript - 将带有 UTC 日期/时间的 JSON 扩展为工作日子条目
- javascript - 用逗号连接嵌套的单个属性
- python - 有什么方法可以在 Firestore DB 中存储“客户端对象”/实时侦听器?
- javascript - discord.js 机器人播放音频但没有声音?
- java - Spring-Boot 项目在 IDE 中执行,但在 JAR 中不执行
- python - numpy argsort 性能缓慢
- git - 团队对 github 中 git repos 的特定权限