nuget 私仓推送
前言
最近公司说 Nexus 的版本太低,需要升级下,这边顺便记录一下 nuget的私仓推送

获取apikey
升级Nexus之后,通过admin账号登录之后,通过一下方式获取api key

更新nuget
nuget.exe push *.nupkg -source http://*:*/repository/nuget-hosted/ -ApiKey "youapikey" Pushing Test.8.6.0.nupkg to 'http://220.169.236.108:8301/repository/nuget-hosted/'... PUT http://*:*/repository/nuget-hosted/ MSBuild 自动检测: 使用来自 "C:\Program Files\Microsoft Visual Studio\18\Enterprise\MSBuild\Current\bin" 的 msbuild 版本 "18.0.2.52102"。 请提供以下内容的凭据: http://*:*/repository/nuget-hosted/ 用户名:admin 密码: *****************
因为nexus 管理员密码修改了,这个推送的时候,会再推送PUT 之前,发送一个GET 请求,这个GET 请求就要求输入账号密码。
为了避免命令行输入账号密码,需要更新source,以下为命令行,其中的 -UserName是账号 -Password为密码
nuget.exe Sources Update -Name "nuget-group" -Source "http://*:*/repository/nuget-hosted/" -UserName "admin" -Password "admin"
CliWrap 封装命令行
C# 可以通过CliWrap类库来封装命令行的执行,CliWrap 类库,后续直接通过一下代码就可以封装
private static async Task PushNugetPack(string nupkgFileName,string apikey,string hostUri) { //通过找到nuget.exe 文件,后续通过Arguments将入参传递过去
// nuget.exe push *.nupkg -source http://220.169.236.108:8301/repository/nuget-hosted/ -ApiKey "984891f7-ccd3-3612-9791-106dc2ad09cb" var cmd = Cli.Wrap("nuget.exe").WithArguments(args => args.Add("push") .Add(nupkgFileName) .Add(apikey) .Add("-source") .Add(hostUri)); await foreach (var cmdEvent in cmd.ListenAsync()) { switch (cmdEvent) { case StartedCommandEvent started: Log.Information($"Process started; ID: {started.ProcessId}"); break; case StandardOutputCommandEvent stdOut: Log.Information($"Out> {stdOut.Text}"); break; case StandardErrorCommandEvent stdErr: Log.Error($"Err> {stdErr.Text}"); break; case ExitedCommandEvent exited: Log.Information($"Process exited; Code: {exited.ExitCode}"); break; } } }
总结
这里大家只要熟悉下nuget 的push命令即可。Cliwrap其实就是将参数拼接起来。

浙公网安备 33010602011771号