使用Nuget管理dll
前言
nuget 已经不是什么新东西,它是vs的一个扩展工具,可以让我们在项目中添加、删除、更新引用变得更加快捷方便。现在有许多传统公司对dll的管理还是很落后的,有些甚至时通过发送dll文件,这样做的直接缺点就是很繁琐、容易出错。之前就有试过一个dll的版本不对,测试人员更新到线上接口直接就挂了,接着就是花一堆时间定位问题。nuget可以让我们很方便的管理引用,减少许多不必要的麻烦。接下来就图文讲解一下如何在自己计算机、公司内部服务器,或者是nuget 服务器搭建自己的nuget库,本篇没有高级的东西,只对新手有参考价值。
搭建包服务器
1. 安装nuget工具
这个就很简单了,如果你的vs还没有那是不行的。直接在【工具】->【扩展和更新】 搜索一下nuget 即可安装,安装后在项目右键引用就会出现【管理Nuget程序包】菜单,在这里我们就可以安装所需要的引用,例如EF,Newtonsoft,jQuery 等等。下面的【程序包管理控制台】可以通过命令来安装引用,界面去操作是一样的。

2. 搭建nuget服务器
nuget 服务器其实就是一个站点,通过请求去获取需要的包。所以我们需要做的就是搭建一个web站点。
我们新建一个asp.net mvc 项目,在【程序包管理器控制台】输入 Install-Package Nuget.Server -Version 2.11.1 即可安装 nuget 相关服务,安装后我们的项目就会多一些文件,web.config也覆盖即可。具体这些是做什么的,我们不用管。
2.1 需要注意的是,这里Nuget.Server 有一定的依赖,所以我们要选择合适的版本,具体可以再这里看:http://www.nuget.org/packages/NuGet.Server/2.11.1
2.2 web.config 几个配置,安装成功后,会多如下几个配置
<add key="requireApiKey" value="true" /> 指示上传包到服务器是否需要apiKey,一般为true
<add key="apiKey" value="" /> 可以看做密匙,在上传包的时候要用到的
<add key="packagesPath" value="" /> 包的位置,默认是 ~/Packages
<add key="allowOverrideExistingPackageOnPush" value="false" /> 是否允许覆盖已存在的包,可以设置为true

2.3 安装后直接发布网站到iis即可,没错,就是这么简单!!!
3. 将nuget服务添加到nuget管理工具
选择【工具】->【库程序包管理器】-> 【程序包管理器设置】,然后把我们创建的服务站点加在这里

3.1 这里要注意有 /nuget 路径,具体可以看站点的路由代码。
这个时候我们在【引用】右键【管理Nuget程序包】这里就可以看到我们新增的服务了。接下来我们要做的就是把包放在这个服务里就行了。

4. 编写dll,上传到服务器
我们随便编写一个dll,然后使用包管理器 NuGetPackageExplorer 来发布,这里个可是化的包管理工具。
4.1 在NuGetPackageExplorer 【Edit】->【Edit Metadata】创建一个Package Metadata,这里可以填写dll的一些信息,大家看起来一看很熟悉的,如果我们的dll有其它依赖,也都可以在这里添加。其中Id 是比较重要的,就是我们安装时要用的,也就是 Install-Package XXX 这里的XXX。

4.2 接着在右边工作区右键新增一个Lib文件夹,再新增刚刚编写的dll

4.3 保存。这个时候会生成一个 .nupkg 的文件,可以把它看做是一个压缩文件,nuget就是依靠解析它来获取实际的dll文件的,我们实际需要也是这个文件,不需要具体的dll。接着在【File】->【publish】即可,这里默认是发布到nuget官网,我们需要去注册账号才能拿到key,不过我们也可以选择上面自己创建的站点,key就是配置文件的key。
这里可能会出现一个Not Allowed的错误,我们需要去【服务的Web站点】->【模块】,找到【WebDAVModel】 并删除它即可。

4.4 发布成功后,在站点的~/Packages 目录下就可以看到变化了。接下来就可以像添加其它引用一样用Nuget从我们自己的服务器添加引用了;也可以在控制太用命令Install-Package TestNugetServerDll 来安装。

总结
其中还有一些坑,踩到了解决就行了,百度也有很多资料。
使用Nuget管理dll的更多相关文章
- 转一篇dudu大人的文章:程序员,用NuGet管理好你的包包
每个女人都有很多包包:其实男人也有,但只有会写程序的男人才有 —— 代码世界中的大“包”小“包”.这些大包小包,有花钱买的,有从开源市场淘的,也有自己或同事亲手制作的. 包包有个特点:容易坏,更新快, ...
- Nuget~管理自己的包包~丢了的包包快速恢复
之前写过一篇Nuget~管理自己的包包的文章,今天来讲Nuget的另一个东西,就是找回丢失的DLL,我们在引用包包后,在当前解决方案根目录就生成一个packages的目前,里面有我们从nuget下载的 ...
- Nuget~管理自己的包包
很久很久以前,自己就想有个包包,最近又从网上淘了一个,价格不便宜呢,99块,还是个小腰包,不过作工还算精良,我喜欢的类型,帆布休闲包,可以将我的手机,耳机,水,小烟,小酒,小伞都放里,方便至极,哈哈!
- 程序员,用NuGet管理好你的包包(转)
每个女人都有很多包包:其实男人也有,但只有会写程序的男人才有 —— 代码世界中的大“包”小“包”.这些大包小包,有花钱买的,有从开源市场淘的,也有自己或同事亲手制作的. 包包有个特点:容易坏,更新快, ...
- 使用NuGet管理项目类库引用
NuGet 是微软开发平台(包括.NET平台)的一个包管理器,这里只介绍和.NET相关的NuGet Visual Studio扩展客户端, 在VS2010 ,VS2012 ,VS2013中默认集成了N ...
- 使用 NuGet 管理项目库
使用 NuGet 管理项目库 Phil Haack 本文转载自:http://msdn.microsoft.com/zh-cn/magazine/hh547106.aspx 无论多么努力,Micros ...
- NuGet管理
使用NuGet管理项目类库引用 NuGet 是微软开发平台(包括.NET平台)的一个包管理器,这里只介绍和.NET相关的NuGet Visual Studio扩展客户端, 在VS2010 ,VS2 ...
- [Nuget]使用Nuget管理工具包
摘要 这里演示如何使用Nuget对类库进行打包,并将类库上传到nuget上面. 步骤 1.在nuget官网注册账号,并登陆. https://www.nuget.org 2.下载Nuget.exe,并 ...
- VS编译时使用/去除NuGet管理库
原文链接:VS编译时自动下载NuGet管理的库 之前一直使用NuGet来管理一些第三方的库,但是每次check in代码时候为了保证编译通过,都需要把对应的packages check in. 比较耗 ...
随机推荐
- R语言实战(五)方差分析与功效分析
本文对应<R语言实战>第9章:方差分析:第10章:功效分析 ================================================================ ...
- 【转】安卓Java的虚拟机区别
Google于2007年底正式发布了Android SDK, 作为 Android系统的重要特性,Dalvik虚拟机也第一次进入了人们的视野.它对内存的高效使用,和在低速CPU上表现出的高性能,确实令 ...
- IOS Cell 重影
效果:重影 原因: 多次创建控件元素 解决:在initWithStyle中进行初始化元素
- cpu95%,查找问题sql
收到一封告警邮件: Load average on xxx_server reached critical threshold values - 169.5 Current Load Avg = 16 ...
- Python3基础 内嵌函数 简单示例
镇场诗: 诚听如来语,顿舍世间名与利.愿做地藏徒,广演是经阎浮提. 愿尽吾所学,成就一良心博客.愿诸后来人,重现智慧清净体.-------------------------------------- ...
- Html 和 Css 的杂乱总结
1. input 中可以设置 maxLength 属性,控制输入的文字数量,中英文字节数一样,但是没有验证兼容性 2.客户端中的页面禁止右键,复制等 <body scroll="no& ...
- YII 1.0 扩展第三方类
扩展缩略图类在blog\protected\extensions 中建立 Image/CThumb.php 1. 自己瞎弄的,一点都不优雅 include_once Yii::app()->Ba ...
- eclipse安装Veloeclipse(Velocity编辑插件)
eclipse安装Veloeclipse(Velocity编辑插件) Help-->install new software-->Add 增加 Name:Veloeclipse Value ...
- #搜索# #BFS# #优先队列# ----- OpenJudge鸣人和佐助
OpenJudge 6044:鸣人和佐助 总时间限制: 1000ms 内存限制: 65536kB 描述 佐助被大蛇丸诱骗走了,鸣人在多少时间内能追上他呢? 已知一张地图(以二维矩阵的形式表示)以及佐 ...
- python 安装与pip安装
在大二的时候接触过一段时间的Python,最近又开始玩起了这门语言.总的来说,个人很喜欢Python的语言风格,但是这门语言对于windows并不算很友好,因为如果是初学者在windows环境下安装, ...