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

  1. NuGet镜像上线试运行

    为解决国内访问NuGet服务器速度不稳定的问题,我们用阿里云服务器搭建了一个NuGet镜像,目前已上线试运行. 使用NuGet镜像源的方法如下: 1)NuGet镜像源地址:https://nuget. ...

  2. 通过ProGet搭建一个内部的Nuget服务器

    .NET Core项目完全使用Nuget 管理组件之间的依赖关系,Nuget已经成为.NET 生态系统中不可或缺的一个组件,从项目角度,将项目中各种组件的引用统统交给NuGet,添加组件/删除组件/以 ...

  3. .NET Core 系列5 :使用 Nuget打包类库

    NuGet是个开源项目,项目包括 NuGet VS插件/NuGet Explorer/NuGetServer/NuGet命令行等项目,.NET Core项目完全使用Nuget 管理组件之间的依赖关系, ...

  4. 如何在nuget上传自己的包+搭建自己公司的NuGet服务器(新方法)

    运维相关:http://www.cnblogs.com/dunitian/p/4822808.html#iis 先注册一个nuget账号https://www.nuget.org/ 下载并安装一下Nu ...

  5. 简单搭建 nuget 内部服务器

    搭建 nuget 内部服务器,最好的方式是使用 ProGet,参考博文<用 ProGet 搭建内部的 NuGet 服务器>,好处非常多,但需要使用 SQL Server 数据库,如果不想使 ...

  6. VS项目中使用Nuget还原包后编译生产还一直报错?

    Nuget官网下载Nuget项目包的命令地址:https://www.nuget.org/packages 今天就遇到一个比较奇葩的问题,折腾了很久终于搞定了: 问题是这样的:我的解决方案原本是好好的 ...

  7. nuget常用命令

    nuget命令的用法: 一.安装 1.安装指定版本类库install-package <程序包名> -version <版本号> 2.安装到指定的项目install-packa ...

  8. 用ProGet搭建内部的NuGet服务器

    最近团队内部用的一个很简陋的NuGet服务器出问题了,nuget push发包,客户端显示发布成功,服务器上就是没有.懶得再去排查这个问题,早就想换掉这个过于简陋的NuGet服务器,借此机会直接弃旧迎 ...

  9. 用命令行工具创建 NuGet 程序包

    NuGet.exe 下载地址 本文翻译自: https://docs.nuget.org/Create/Creating-and-Publishing-a-Package https://docs.n ...

  10. 搭建自己的Nuget服务器

    序言 你们公司有没有好多项目,有没有好多类库,你们的类库是在tfs中管理,还是svn或者github,又或者是各自为政版本类库随意使用? 那么你们使用者写类库的时候方便吗? 有没有更新下载,版本不一致 ...

随机推荐

  1. HDU 4055 Number String dp

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=4055 Number String Time Limit: 10000/5000 MS (Java/O ...

  2. 使用Logstash同步数据至Elasticsearch,Spring Boot中集成Elasticsearch实现搜索

    安装logstash.同步数据至ElasticSearch 为什么使用logstash来同步,CSDN上有一篇文章简要的分析了以下几种同步工具的优缺点:https://blog.csdn.net/la ...

  3. css3 关于文字,字体属性(转载)

    1.text-overflow属性(实现省略号效果) text-overflow用来设置是否使用一个省略标记(…)标示对象内文本的溢出. [语法] ❤text-overflow只是用来说明文字溢出时用 ...

  4. RabbitMQ 安装,配置

    1:安装 yum install -y rabbitmq-server   2:主要程序介绍 # 管理插件的程序 /usr/sbin/rabbitmq-plugins # 服务程序 /usr/sbin ...

  5. MySQL 基于mysqldump备份工具实战演练

    前言: 细节提示:先执行 show global variables like 'log_bin';看看log_bin的值,如果服务器变量log_bin的值为OFF,需要修改my.cnf配置文件,将l ...

  6. NFS 它的目的就是想让不同的机器、不同的作业系统可以彼此分享个别的档案啦

    NFS即网络文件系统,是FreeBSD支持的文件系统中的一种,它允许网络中的计算机之间通过TCP/IP网络共享资源.在NFS的应用中,本地NFS的客户端应用可以透明地读写位于远端NFS服务器上的文件, ...

  7. python配置文件读取

    在代码实现的过程中,我们经常选择将一些固定的参数值写入到一个单独的配置文件中.在python中读取配置文件官方提供了configParser方法. 主要有如下方法(找官文):   (这家伙很懒,直接复 ...

  8. 转载:java程序调用内存的变化过程

    前文知道了java程序运行时在内存中的大概分布,但是对于具体程序是如何运行的,看到一篇文章,直接转载过来. (一)不含静态变量的java程序运行时内存变化过程分析 代码: package oop; / ...

  9. C# WebBrowser控件模拟登录

    一.问题点: 1.模拟登录后,如果带有嵌套的iframe嵌套,不好读取iframe内容,可以直接指定iframe抓取网址 2.C# 清除WebBrowser控件的Session和Cookie 参考文档 ...

  10. 【bzoj2351】[BeiJing2011]Matrix 二维Hash

    题目描述 给定一个M行N列的01矩阵,以及Q个A行B列的01矩阵,你需要求出这Q个矩阵哪些在原矩阵中出现过.所谓01矩阵,就是矩阵中所有元素不是0就是1. 输入 输入文件的第一行为M.N.A.B,参见 ...