Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Azure Devops发布Nuget包_Nuget_Azure Devops_Azure Pipelines Release Pipeline - Fatal编程技术网

使用Azure Devops发布Nuget包

使用Azure Devops发布Nuget包,nuget,azure-devops,azure-pipelines-release-pipeline,Nuget,Azure Devops,Azure Pipelines Release Pipeline,我正试图在Azure DevOps中创建一个发布管道,将一个包发布到Nuget.org。构建管道工作正常,并将包创建为构建工件。我可以发布到Azure Artifacts中托管的提要,但无法发布到Nuget.org。我认为问题在于服务连接 我尝试过使用ApiKey,但这会抛出一个错误 DotNet Core不支持加密的API密钥“错误” 下面是试图推送包的发布步骤。 我也尝试了feedurl,但这似乎没有什么不同 日志输出 2018-10-21T23:27:36.3177322Z###[部分]

我正试图在Azure DevOps中创建一个发布管道,将一个包发布到Nuget.org。构建管道工作正常,并将包创建为构建工件。我可以发布到Azure Artifacts中托管的提要,但无法发布到Nuget.org。我认为问题在于服务连接

我尝试过使用ApiKey,但这会抛出一个错误

DotNet Core不支持加密的API密钥“错误”

下面是试图推送包的发布步骤。

我也尝试了feedurl,但这似乎没有什么不同

日志输出

2018-10-21T23:27:36.3177322Z###[部分]开始:Nuget Push 2018-10-21T23:27:36.3183449Z============================================================================== 2018-10-21T23:27:36.3183547Z任务:.净核心 2018-10-21T23:27:36.3183635Z说明:构建、测试、打包或发布dotnet应用程序,或运行自定义dotnet命令。对于包命令,支持NuGet.org和经过身份验证的提要,如包管理和MyGet。 2018-10-21T23:27:36.3183729Z版本:2.141.0 2018-10-21T23:27:36.3183791Z作者:微软公司 2018-10-21T23:27:36.3183871Z帮助: 2018-10-21T23:27:36.3183936Z============================================================================== 2018-10-21T23:27:37.1663123Z[命令]C:\Windows\system32\chcp.com 65001 2018-10-21T23:27:37.1762529Z活动代码页:65001 2018-10-21T23:27:37.1808736Z系统VSS连接存在真实性 2018-10-21T23:27:37.3473599Z系统VSS连接存在真实性 2018-10-21T23:27:37.47071Z系统VSS连接存在真实性 2018-10-21T23:27:37.4739974Z e3e8a3af-5c6c-44e9-820c-C62AF097256存在 2018-10-21T23:27:37.4807474Z将NuGet.config保存到临时配置文件。 2018-10-21T23:27:37.4833034Z将NuGet.config保存到临时配置文件中。 2018-10-21T23:27:37.4919745Z使用以下URI的身份验证信息: 2018-10-21T23:27:37.4988034Z[命令]C:\hostedtoolcache\windows\dncs\2.1.105\x64\dotnet.exe nuget push“{package}”--源代码--需要api密钥api密钥 2018-10-21T23:27:38.3984300Z信息:正在将TranslatorConsole.1.0.0.6.nupkg推送到“”。。。 2018-10-21T23:27:38.4171650Z信息:发布 2018-10-21T23:27:38.8798808Z信息:禁止使用462ms 2018-10-21T23:27:38.9562536Z错误:响应状态代码不表示成功:403(指定的API密钥无效、已过期或没有访问指定包的权限)。 2018-10-21T23:27:40.2195255Z##[错误]错误:C:\hostedtoolcache\windows\dncs\2.1.105\x64\dotnet.exe失败,返回代码:1 2018-10-21T23:27:40.2206711Z###[错误]包未能发布 2018-10-21T23:27:40.2307763Z###[部分]整理:Nuget Push


Github中跟踪到一个问题:

由于 加密密钥所需的库不可用,抱歉 不便之处。您应该能够使用服务端点 配置了用户名/密码组合。如果你只能使用 作为一个ApiKey,我建议使用nuget 2.*任务来推送

因此,您可以尝试使用
Nuget 2.*
任务来推送包。(添加任务-->包-->Nuget)


或者,您可以通过调用
dotnetnugetpush
命令,通过命令行任务将包推送到NuGet服务器来处理此问题。参考此线程:

我正在处理相同的问题-从Azure DevOps将nuget发布到nuget.org提要。尽管这个事实仍然有效,但有一个简单的方法可以做到,答案对我帮助不大

解决方案 第一步 在NuGet.org中生成ApiKey

步骤2 将ApiKey添加到管道中

最终产品应如下所示:

步骤3 使用具有的PowerShell任务更新管道YAML

-任务:PowerShell@2
投入:
targetType:“内联”
脚本:“nuget push$(Build.ArtifactStagingDirectory)\*.nupkg-ApiKey$(myNuGetApiKey)-源代码https://api.nuget.org/v3/index.json'
在这项任务中,您不必做任何更改。它将与Azure DevOps提供的任何标准NuGet打包方式一起工作

发布更新的
yaml
管道,您就可以开始了

整条管道
触发器:
-主人
游泳池:
vmImage:“windows最新版本”
步骤:
-任务:NuGetToolInstaller@1
投入:
版本规范:“5.7.0”
最新消息:真的
-任务:DotNetCoreCLI@2
投入:
命令:“构建”
项目:'**/yourprojectname或*ForAll.csproj'
-任务:NuGetCommand@2
投入:
命令:pack
PackageTopack:“**/yourprojectname或*ForAll.csproj”
-任务:PowerShell@2
投入:
targetType:“内联”
脚本:“nuget push$(Build.ArtifactStagingDirectory)\*.nupkg-ApiKey$(myNuGetApiKey)-源代码https://api.nuget.org/v3/index.json'
-任务:PowerShell@2
投入:
targetType:“内联”
脚本:“nuget push$(Build.ArtifactStagingDirectory)\*.snupkg-ApiKey$(myNuGetApiKey)-源代码https://api.nuget.org/v3/index.json'

注意:第二个任务是发布符号包。如果您的项目不支持源链接,则可以省略此任务。NuGet程序经理Karam Nandwani的一篇文章指出,拙劣的包,
*.nupkg
*.snupkg
将通过一个NuGet命令自动发布,但这是真的。至少现在是这样。

我切换到Nuget任务,它成功了。知道为什么使用用户名/密码基本身份验证不起作用吗?这应该被标记为答案。@Sam谢谢。:)