关于NuGet
一、NuGet是什么?
NuGet是Microsoft开发平台的程序集包管理器,它由客户端工具和服务端站点组成,客户端工具提供给用户管理和安装/卸载软件程序包,以及打包和发布程序包到NuGet服务端站点等功能,服务端站点存储已经发行的软件包,并为NuGet客户端软件包库提供服务,使软件包共享给其他的开发者。
二、NuGet服务端站点的搭建
1、打开Visual Studio创建空的Web站点,如图:
2、打开管理NuGet程序包,选择程序包源为:nuget.org 然后在搜索框中输入:NuGet.Server,如图:
当然你也可以在程序包控制台中输入下面的命令直接安装
install-package NuGet.Server
3、安装完成之后,打开web.confg 修改apikey 如图:
如果requireApiKey的值设置为false,那么apikey就可以设置为空,我这里随便搞了一个,然后服务端的站点就完成了,你可以将这个站点部署到服务器的IIS里面,看一下最后运行的结果:
三、NuGet客户工具打包和发布程序包到刚刚搭建的NuGet服务器上与其他开发者共享程序包
1、首先我们得安装NuGet客户端工具,我的Visual Studio 2015是自带的(我选择了完全安装模式),如果你的没有那么可以到nuget上下载安装包,安装包的下载地址:https://www.nuget.org/
2、将程序集打包
在打包之前先要创建一个打包清单文件.nuspec, 你可以从头到尾手动创建打包清单,或者输入下面的命令进行创建:
nuget spec
其更多选项可以参考其官方文档:https://docs.nuget.org/ndocs/tools/nuget.exe-cli-reference#spec
这个命令你可以在visual studio的程序包管理控制台里面执行,也可以在cmd里面执行,但都需要路由到需要打包的项目目录下运行,如图:
我先把它改名为dogstar.nuspec,然后你可以使用任何文本编辑器来打开这个文件,如图:
在这里我简单介绍一下下面的的几个元素,其他更多请参照官方文档(https://docs.nuget.org/ndocs/schema/nuspec)
id:程序包的唯一标识符
version:发行版本号
description:程序包的功能详细说明
releaseNotes:本次发行的版本有那些主要变更,例如:修复bug,支持全文检索
dependencies:此程序包依赖于哪些Nuget上的程序包
files:包含程序集文件和内容文件
程序集文件的目标根目录必须是lib,如:target="lib" 或者 target="lib\net40",lib目录下的文件将会安装到目标项目的bin目录下
内容文件的目标根目录必须是content,如:target="content\scripts" 或者 target="content\theme\css",content目录下的所有文件和文件夹都会被安装到目标项目下的根目录下
这里需要提醒一下的就是路径不可以用“/”分隔符,必须使用“\"分隔符
exclude属性指定不包括的文件;
关于files节点的更多内容请参照官方文档:https://docs.nuget.org/ndocs/schema/nuspec#including-assembly-files
文件清单创建完毕之后,执行下面的命令进行打包:
nuget pack dogstar.nuspec
执行命令之后会生成一个 dogstar.1.0.0.nupkg 文件,这里你会看到一堆的警告,其实打包还有可以用visual studio的项目文件(*.csproj)进行打包,具体操作请参照官方文档:https://docs.nuget.org/ndocs/create-packages/creating-a-package#creating-the-package
到此为止打包的步骤就已经完成了,下面介绍发布到nuget服务器上的操作
3、将nuget包发布到服务器上
发布的操作相当简单,其实在前面的第二部分的Nuget服务器站点搭建完成之后运行站点后的那个效果图里面就已经将方法输出来了,请看下面的命令:
nuget push dogstar.1.0.0.nupkg 4003d786-cc37-4004-bfdf-c4f3e8ef9b3a -Source http://localhost:27928/api/v2/package
四、验证结果
NuGet服务端站点和客户端打包发布都已经介绍玩了,现在回到nuget管理程序包里面验证一下结果,在验证结果之前,首先添加程序包源的设置,如图:
然后在程序包源的下拉中选择client test 将会看到我们刚刚发布的dogstar程序包,如图:
ok,马上点击安装看一下
打包的文件已经正确安装到测试项目里面,验证结果成功!
关于NuGet的更多相关文章
- NuGet镜像上线试运行
为解决国内访问NuGet服务器速度不稳定的问题,我们用阿里云服务器搭建了一个NuGet镜像,目前已上线试运行. 使用NuGet镜像源的方法如下: 1)NuGet镜像源地址:https://nuget. ...
- 通过ProGet搭建一个内部的Nuget服务器
.NET Core项目完全使用Nuget 管理组件之间的依赖关系,Nuget已经成为.NET 生态系统中不可或缺的一个组件,从项目角度,将项目中各种组件的引用统统交给NuGet,添加组件/删除组件/以 ...
- .NET Core 系列5 :使用 Nuget打包类库
NuGet是个开源项目,项目包括 NuGet VS插件/NuGet Explorer/NuGetServer/NuGet命令行等项目,.NET Core项目完全使用Nuget 管理组件之间的依赖关系, ...
- 如何在nuget上传自己的包+搭建自己公司的NuGet服务器(新方法)
运维相关:http://www.cnblogs.com/dunitian/p/4822808.html#iis 先注册一个nuget账号https://www.nuget.org/ 下载并安装一下Nu ...
- 简单搭建 nuget 内部服务器
搭建 nuget 内部服务器,最好的方式是使用 ProGet,参考博文<用 ProGet 搭建内部的 NuGet 服务器>,好处非常多,但需要使用 SQL Server 数据库,如果不想使 ...
- VS项目中使用Nuget还原包后编译生产还一直报错?
Nuget官网下载Nuget项目包的命令地址:https://www.nuget.org/packages 今天就遇到一个比较奇葩的问题,折腾了很久终于搞定了: 问题是这样的:我的解决方案原本是好好的 ...
- nuget常用命令
nuget命令的用法: 一.安装 1.安装指定版本类库install-package <程序包名> -version <版本号> 2.安装到指定的项目install-packa ...
- 用ProGet搭建内部的NuGet服务器
最近团队内部用的一个很简陋的NuGet服务器出问题了,nuget push发包,客户端显示发布成功,服务器上就是没有.懶得再去排查这个问题,早就想换掉这个过于简陋的NuGet服务器,借此机会直接弃旧迎 ...
- 用命令行工具创建 NuGet 程序包
NuGet.exe 下载地址 本文翻译自: https://docs.nuget.org/Create/Creating-and-Publishing-a-Package https://docs.n ...
- 搭建自己的Nuget服务器
序言 你们公司有没有好多项目,有没有好多类库,你们的类库是在tfs中管理,还是svn或者github,又或者是各自为政版本类库随意使用? 那么你们使用者写类库的时候方便吗? 有没有更新下载,版本不一致 ...
随机推荐
- RAR和ZIP:压缩大战真相 (挺赞值得了解)
前言--王者归来? 等待足足两年之久,压缩霸主WinZip终于在万众期待下发布了9.0正式版.全世界自然一片沸腾,在世界各大知名下载网站中,WinZip9.0再次带起下载狂潮.然而此时国内并没有王者回 ...
- 软工网络15团队作业4——Alpha阶段敏捷冲刺-8
一.当天站立式会议照片: 二.项目进展 昨天已完成的工作: 服务器的完善,后端配置的修改. 明天计划完成的工作: 完善各个功能以及修改bug. 工作中遇到的困难: 服务器的语言编程困难,后端调试中不断 ...
- 【beta】Scrum站立会议第3次....11.6
小组名称:nice! 组长:李权 成员:于淼 刘芳芳韩媛媛 宫丽君 项目内容:约跑app(约吧) 时间:2016.11.6 12:00——12:30 地点:传媒西楼220室 本次对beta阶段的需 ...
- linux设置时区和自动同步时间
1.设置时区 编辑 /etc/sysconfig/clock 修改 ZONE="Asia/Shanghai" 然后 cp /usr/share/zoneinfo/Asia/Sh ...
- hibernate.cfg.xml案例
一.概念. hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库.既然学习Hibernate那么第 ...
- dat.gui 上手
dat.gui是款神器产品.一个调试利器.但是用起来很简单很简单 1:引用dat.gui.js. 2:实例化 this.gui = new dat.GUI(); 3:创建可设置一个数据对象.例如v ...
- bzoj2013[CEOI2010] A huge tower
题意 有N(2<=N<=620000)快砖,要搭一个N层的塔,要求:如果砖A恰好在砖B上面,那么A不能比B的长度+D要长.问有几种方法,输出 答案 mod 1000000009的值 分析 ...
- Day20-初识Ajax
想要实现的功能:点击提交以后,让数据发到后台进行验证,但是页面不刷新.悄悄提交用Ajax. 那么返回的字符串怎么样展示到前端HTML页面呢?可以在HTML中写个标签,定义一个选择器. 利用$('#id ...
- 【BZOJ3203】保护出题人(动态规划,斜率优化)
[BZOJ3203]保护出题人(动态规划,斜率优化) 题面 BZOJ 洛谷 题解 在最优情况下,肯定是存在某只僵尸在到达重点的那一瞬间将其打死 我们现在知道了每只僵尸到达终点的时间,因为僵尸要依次打死 ...
- Linux内核分析第四周学习总结——系统调用的工作机制
Linux内核分析第四周学习总结--系统调用的工作机制 内核态 执行级别高,可以执行特权指令,访问任意物理地址,在intel X86 CPU的权限分级为0级. 用户态 执行级别低,只能访问0x0000 ...