前言
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 来安装。
总结
其中还有一些坑,踩到了解决就行了,百度也有很多资料。