使用批处理脚本自动生成并上传NuGet包(操作方法)
Hello大家好,我是TANZAME,我们又见面了。
NuGet是什么这里就不再重复啰嗦,园子里一搜一大把。今天要跟大家分享的是,在日常开发过程中如何统一管理我们的包,如何通过批处理脚本生成包并自动上传到NuGet。在实际项目开发过程中我们要上传自己的包,一般的步骤都是:nugetspec=>nugetpack=>nugetpush,一个包都要至少重复三个动作,如果有N个包那就要重复N*3次,想想都不能忍,所以便有了今天的分享主题。
生成目录
既然是统一管理,生成的包自然是放在同一个文件夹,而不是分散在各个.proj目录里。这里我们在解决方案所在目录新建一个目录,这样做的目的是方便bat脚本找到解决方案下面的子项目。比如我这里新建的是.nuget这个目录,需要注意的是如果目录名称有特殊字符的话不能直接右键新建,需要用命令提示符,直接在解决方案所在目录使用快捷键SHIFT+右键就能直接打开命令提示符,这样可以省去一大堆cd的操作。
下载NuGet
到NuGet官网下载命令行接口(CLI)。nuget.exe提供了完整的nuget功能,可用于安装、创建、发布和管理包,而无需对项目文件进行任何更改。
- 请访问nuget.org/downloads,并选择NuGet3.3或更高版本(2.8.6与Mono不兼容)。始终建议使用最新版。若要将包发布到nuget.org,版本至少必须是4.1.0。
- 每次下载都直接下载nuget.exe文件。让浏览器将文件保存到选定文件夹。此文件不是安装程序;如果直接在浏览器中运行,就不会看到任何内容。
- 将文件夹添加到nuget.exe中放置PATH环境变量的位置,这样就可以从任意位置使用CLI工具。这里我们把它放在上一步新建的.nuget文件夹下面,并设置PATH环境变量。
生成清单
.nuspec文件是包含包元数据的XML清单,此清单同时用于生成包以及为使用者提供信息。这个清单文件我们只需要生成一次,以后都不需要再重新生成。.netCore和使用sdk特性.NETStandard项目不需要.nuspec文件,如果是.netCore和使用sdk特性.NETStandard项目则忽略此步骤。转到项目所在目录,SHIFT+右键调出命令提示符,输入nugetspec命令即可生成我们所需要的包元数据清单。
将这个清单文件剪切到第一步新建的.nuget文件夹,剪切过去后项目下面就不会凭空多出一个文件,看着清爽多了。然后做一下调整填入我们自己项目的相关信息,比如像下面这样:
TZM.XFramework $version$ $title$ $author$ $author$ Apache-2.0 https://github.com/TANZAME/TZM.XFramework http://go.microsoft.com/fwlink/?LinkID=386613 TZM.XFrameworkisalightweightandhighperformanceobject-relationalmapperfor.NETusetheoriginalEntityFrameworkapi. Copyright2019 .NETSqlServerMSSQLDatabaseDataO/RMADO.NET
编写脚本
在第一步新建的文件夹里新建一个bat文件,重命名为package.bat,接下来编写我们的自动脚本。完整bat脚本戳这里,直接上代码片段。
- 这里我设置nugetpack包属性为Release,并且不自动生成,所以需要先在Release模式下编译完成再运行脚本。加上-Build参数的话输出的信息太多看得贼难受,这里把它去掉,我们自己手动编译。
- 填充api_key。去nuget官网登录自己的帐号并创建一个key,复制粘贴到api_key变量。
- 注意.netframework项目(fx)和.netcore项目使用的命令不一样至此我们所有的准备步骤都已完成,双击package.bat运行脚本,解放双手。
@echooff setapi_key=xxxxxxlef2j57rw4q26qcrvycvznyvcurgfxbzxxxxxxxx setsource_api_uri=https://api.nuget.org/v3/index.json setstartup_dir=%~dp0 cd..\ setstartup_dir=%cd% cd.nuget ::打包TZM.XFramework-Build echopackTZM.XFramework copyTZM.XFramework.nuspec%startup_dir%\net45\TZM.XFramework nugetpack%startup_dir%\net45\TZM.XFramework\TZM.XFramework.csproj-PropertiesConfiguration=Release del%startup_dir%\net45\TZM.XFramework\TZM.XFramework.nuspec echo= ::打包TZM.XFrameworkCore echopackTZM.XFrameworkCore dotnetpack--no-build--configurationRelease--output%startup_dir%\.nuget\%startup_dir%\netcore\TZM.XFrameworkCore\TZM.XFrameworkCore.csproj ::批量推送包 for/R%cd%%%fin(*.nupkg)do( echo= dotnetnugetpush%%f-k%api_key%-s%source_api_uri% ) echo= pause
最后贴一张最终运行的效果图:
总结
通过这个脚本,我们可以在一个文件夹里统一管理我们的包,做到一键生成、上传同时保持项目文件的清爽,嗯简直不要太方便~..~
参考资料:https://docs.microsoft.com/zh-cn/nuget/
以上所述是小编给大家介绍的使用批处理脚本自动生成并上传NuGet包,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对毛票票网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。