关于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,又或者是各自为政版本类库随意使用? 那么你们使用者写类库的时候方便吗? 有没有更新下载,版本不一致 ...
随机推荐
- lintcode-203-线段树的修改
203-线段树的修改 对于一棵 最大线段树, 每个节点包含一个额外的 max 属性,用于存储该节点所代表区间的最大值. 设计一个 modify 的方法,接受三个参数 root. index 和 val ...
- 运维学习笔记(七)之T02-01计算机网络 、 数制 、 网络通信参考模型
计算机网络 计算机网络概述 什么是计算机网络 硬件方面:通过线缆将网络设备和计算机连接起来 软件方面:操作系统.应用软件.应用程序通过通信线路互连 实现资源共享.信息传递 功能 数据通信/资源共享/增 ...
- 解决Max retries exceeded with url的问题
requests.exceptions.ConnectionError: HTTPSConnectionPool(host='itunes.apple.com', port=443): Max ret ...
- 团队项目-BUG挖掘
测试硬件: 华为畅享5 测试平台: 安卓5.1 测试项目Git地址: https://github.com/RABITBABY/We-have-bing 测试Apk来源地址: http://www.a ...
- CSS单位-长度
css中的长度单位有很多,不同的单位在特定的需求下能够有相当不错的表现,随着css3的发布,又有了一些新的单位添加进来,使我们在做前端页面的时候能够有更多的选择,更方便快捷的达到我们预期的效果. 正题 ...
- P2756 飞行员配对方案问题(网络流24题之一)
题目背景 第二次世界大战时期.. 题目描述 英国皇家空军从沦陷国征募了大量外籍飞行员.由皇家空军派出的每一架飞机都需要配备在航行技能和语言上能互相配合的2 名飞行员,其中1 名是英国飞行员,另1名是外 ...
- Django基于正则表达式的URL(1)
1. 此时,用户只能看到列表,如果用户想查看详细信息,应该再增加程序. 2. 把信息用a标签包起来以后,详细信息就有了可以跳转的功能. . 3. 点击不同的用户名时,获取到不同的信息. 3.1 在ur ...
- 转:SVM与SVR支持向量机原理学习与思考(一)
SVM与SVR支持向量机原理学习与思考(一) 转:http://tonysh-thu.blogspot.com/2009/07/svmsvr.html 弱弱的看了看老掉牙的支持向量机(Support ...
- IBatis Map报错10.1
检查 providers.config 把没用的给关闭掉即可
- [JLOI2012]时间流逝 树上高斯消元 概率期望
题面 题意:(感觉题面写的题意是错的?)有\(n\)种能量不同的圈,设当前拥有的圈的集合为\(S\),则: 1,每天有\(p\)概率失去一个能量最小的圈.特别的,如果\(S = \varnothing ...