天道酬勤

nuget 私仓推送

前言

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

3c0340625307ef1064cb4c61f166ff45

 

获取apikey

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

image

 

更新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其实就是将参数拼接起来。

 

posted @ 2025-11-17 15:13  JulyLuo  阅读(1)  评论(0)    收藏  举报