前言

  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的更多相关文章

  1. 转一篇dudu大人的文章:程序员,用NuGet管理好你的包包

    每个女人都有很多包包:其实男人也有,但只有会写程序的男人才有 —— 代码世界中的大“包”小“包”.这些大包小包,有花钱买的,有从开源市场淘的,也有自己或同事亲手制作的. 包包有个特点:容易坏,更新快, ...

  2. Nuget~管理自己的包包~丢了的包包快速恢复

    之前写过一篇Nuget~管理自己的包包的文章,今天来讲Nuget的另一个东西,就是找回丢失的DLL,我们在引用包包后,在当前解决方案根目录就生成一个packages的目前,里面有我们从nuget下载的 ...

  3. Nuget~管理自己的包包

    很久很久以前,自己就想有个包包,最近又从网上淘了一个,价格不便宜呢,99块,还是个小腰包,不过作工还算精良,我喜欢的类型,帆布休闲包,可以将我的手机,耳机,水,小烟,小酒,小伞都放里,方便至极,哈哈!

  4. 程序员,用NuGet管理好你的包包(转)

    每个女人都有很多包包:其实男人也有,但只有会写程序的男人才有 —— 代码世界中的大“包”小“包”.这些大包小包,有花钱买的,有从开源市场淘的,也有自己或同事亲手制作的. 包包有个特点:容易坏,更新快, ...

  5. 使用NuGet管理项目类库引用

    NuGet 是微软开发平台(包括.NET平台)的一个包管理器,这里只介绍和.NET相关的NuGet Visual Studio扩展客户端, 在VS2010 ,VS2012 ,VS2013中默认集成了N ...

  6. 使用 NuGet 管理项目库

    使用 NuGet 管理项目库 Phil Haack 本文转载自:http://msdn.microsoft.com/zh-cn/magazine/hh547106.aspx 无论多么努力,Micros ...

  7. NuGet管理

    使用NuGet管理项目类库引用   NuGet 是微软开发平台(包括.NET平台)的一个包管理器,这里只介绍和.NET相关的NuGet Visual Studio扩展客户端, 在VS2010 ,VS2 ...

  8. [Nuget]使用Nuget管理工具包

    摘要 这里演示如何使用Nuget对类库进行打包,并将类库上传到nuget上面. 步骤 1.在nuget官网注册账号,并登陆. https://www.nuget.org 2.下载Nuget.exe,并 ...

  9. VS编译时使用/去除NuGet管理库

    原文链接:VS编译时自动下载NuGet管理的库 之前一直使用NuGet来管理一些第三方的库,但是每次check in代码时候为了保证编译通过,都需要把对应的packages check in. 比较耗 ...

随机推荐

  1. java域名解析

    DNS原理:http://amon.org/dns-introduction.html 根域:就是所谓的“.” 根域服务器只是具有13个IP地址,但机器数量却不是13台,因为这些IP地址借助了任播的技 ...

  2. 关于java中的批注

    J2SE 提供的最后一个批注是 @SuppressWarnings.该批注的作用是给编译器一条指令,告诉它对被批注的代码元素内部的某些警告保持静默. 一点背景:J2SE 5.0 为 Java 语言增加 ...

  3. C#创建datatable (转)

      C#创建datatable 方法一: DataTable tblDatas = new DataTable("Datas"); DataColumn dc = null; dc ...

  4. [osgEarth]osgEarth

    参考:http://bbs.osgchina.org/forum.php?mod=viewthread&tid=5484&extra=page%3D1&_dsign=70b15 ...

  5. Java Me-List控件的用法案例

    /** * Java Me-List控件的用法案例 */package com.xushouwei.cn; import java.io.IOException;import javax.microe ...

  6. jQuery软键盘插件

    1.html: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.or ...

  7. jQuery动画高级用法(上)——详解animation中的.queue()动画队列插队函数

    决定对animate方面做一些总结,希望能给大家一些启发和帮助 从一个实际应用谈起 今天不谈animate().fadeIn().fadeOut().slideUp().show().hide()诸如 ...

  8. HDU2553(回溯)

    N皇后问题 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submi ...

  9. CodeForces 446B

    DZY Loves Modification time limit per test 2 seconds memory limit per test 256 megabytes input stand ...

  10. 棒!使用.NET Core构建3D游戏引擎

    原文地址:https://mellinoe.wordpress.com/2017/01/18/net-core-game-engine/ 作者:ERIC MELLINO 翻译:杨晓东(Savorboa ...