.net core 如何通过管道UI将自包含的dotnet核心包发布到azure工件?

.net core 如何通过管道UI将自包含的dotnet核心包发布到azure工件?,.net-core,azure-devops,nuget-package,self-contained,.net Core,Azure Devops,Nuget Package,Self Contained,我已经使用dotnet core创建了一个应用程序。我将它构建为一个独立的包。我正在尝试使用管道UI将其发布到Azure工件服务器。我已经能够成功地构建自包含的包,并且能够成功地将其发布到drop。我还没有弄清楚如何使用NuGet-pack命令(以及随后的NuGet-push)来获取自包含的包,并将其作为可下载包放在工件服务器上 以下是我的发布任务的YAML: steps: - task: DotNetCoreCLI@2 displayName: 'dotnet publish'

我已经使用dotnet core创建了一个应用程序。我将它构建为一个独立的包。我正在尝试使用管道UI将其发布到Azure工件服务器。我已经能够成功地构建自包含的包,并且能够成功地将其发布到drop。我还没有弄清楚如何使用NuGet-pack命令(以及随后的NuGet-push)来获取自包含的包,并将其作为可下载包放在工件服务器上

以下是我的发布任务的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文件的生成管道,在“变量”选项卡上定义变量,然后选择该选项以使其在队列时可设置。看见 在复制步骤中,日志表明完整的自包含包确实正在复制到“\src\TelemetryReceiver\bin\Release\netcoreapp2.2\win-x64”。但是最后一个包是从工件服务器下载的,它只接收“netcoreapp2.2”目录的内容

当然,我对“dotnet发布”和“NuGet pack”任务之间的关系感到困惑。似乎两者都独立地评估了
.csproj
文件,就是这样

如何通过管道UI将自包含的dotnet核心包发布到azure工件

您可能会误解任务
dotnet publish
,该任务不用于发布nuget包。它用于创建一个
.zip
文件存档,以便发布到web应用程序:

查看文档以了解更多详细信息

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

要通过管道UI将自包含的dotnet核心包发布到azure工件,只需使用
复制任务
发布构建工件任务

它仅拾取“netcoreapp2.2”目录的内容的原因是,由于您在
复制任务的
内容中的语法不正确,因此应将其指定给
.nupkg

 Contents: '**\bin\$(BuildConfiguration)\**\*.nupkg'
然后,在工件中:

或者,我们可以在
nuget-pack
任务中将包文件夹指定为
$(Build.artifactstagindirectory)

在这种情况下,我们不需要复制任务将包复制到
ArtifactStagingDirectory
,只需使用task
PublishBuildArtifacts

希望这有帮助

如何通过管道UI将自包含的dotnet核心包发布到azure工件

您可能会误解任务
dotnet publish
,该任务不用于发布nuget包。它用于创建一个
.zip
文件存档,以便发布到web应用程序:

查看文档以了解更多详细信息

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

要通过管道UI将自包含的dotnet核心包发布到azure工件,只需使用
复制任务
发布构建工件任务

它仅拾取“netcoreapp2.2”目录的内容的原因是,由于您在
复制任务的
内容中的语法不正确,因此应将其指定给
.nupkg

 Contents: '**\bin\$(BuildConfiguration)\**\*.nupkg'
然后,在工件中:

或者,我们可以在
nuget-pack
任务中将包文件夹指定为
$(Build.artifactstagindirectory)

在这种情况下,我们不需要复制任务将包复制到
ArtifactStagingDirectory
,只需使用task
PublishBuildArtifacts


希望这能有所帮助。

您正在使用两种不同的技术,您可以使用
dotnet
命令执行所有操作:首先使用dotnet pack创建.nupkg文件,然后使用dotnet push命令将nupkg推送到nuget提要。我只使用了.NET核心命令,添加了“dotnet pack”和“dotnet push”,然后禁用先前的“NuGet Pack”和“NuGet Push”任务。结果是一样的。我不确定“dotnet发布”和“dotnet包”命令之间的关系。发布似乎是创建自包含包所必需的,但是pack命令使用.csproj文件来创建包。我不知道我如何获取发布命令的输出并将其交给pack命令。您是否将打包作为第一次获取然后再推送?是的。它是“发布、打包、推送”,您的工件中现在有nupkg文件吗?推送步骤中有警告吗?您正在使用两种不同的技术,可以使用
dotnet
命令执行所有操作:首先使用dotnet-pack创建.nupkg文件,然后使用dotnet-push命令将nupkg推送到nuget提要。我只使用了.NET核心命令,添加了“dotnet-pack”和“dotnet-push”,然后禁用先前的“NuGet Pack”和“NuGet Push”任务。结果是一样的。我不确定“dotnet发布”和“dotnet包”命令之间的关系。发布似乎是创建自包含包所必需的,但是pack命令使用.csproj文件来创建包。我不知道我如何获取发布命令的输出并将其交给pack命令。您是否将打包作为第一次获取然后再推送?是的。它是“发布、打包、推送”,您的工件中现在有nupkg文件吗?推动步骤是否发出警告?没有帮助。仅执行上述“复制任务”和“publishbuildartifacts任务”过程并没有在工件存储中创建新版本。正在执行“nuget pack”(可以是“.net核心”版本,也可以是“nuget TA”