手把手教你----使用Nuget管理自己的项目库

  • 什么是NuGet
  • 为什么用NuGet
  • 怎么使用NuGet
    • STEP1 在NuGet官网上注册并获取API Key
    • STEP2 下载NuGetexe
    • STEP3 设置API Key
    • SETP4 开发自己的类库
    • STEP5 产生并修改nuspec
    • STEP6 产生类库包Library Package
    • STEP7 发布类库包
    • STEP8 测试以及更新类库包

什么是NuGet?



官网上的解释:NuGet is the package manager for the Microsoft development platform including .NET. The NuGet client tools provide the ability to produce and consume packages. The NuGet Gallery is the central package repository used by all package authors and consumers.
大致的意思:NuGet 是一种 Visual Studio 扩展工具,它能够简化在 Visual Studio 项目中添加、更新和删除库(部署为程序包)的操作。
可以去看一下NuGet 百度百科的介绍。

为什么用NuGet?



    简单的说NuGet可以是我们的工作更方便,当我们的项目里要引用到的一些库时候,比如JQuery、Newtonsoft.Json、log4net等,我们需要从网上下载这些库,然后依次拷贝到各个项目中,当有的类库有更新时又不得不再重复一遍很是繁琐 ,这时就可以考虑使用NuGet来帮我们管理和更新这些类库,而且更新类库时会自动添加类库的相关引用,方便至极。
    在我们做项目的过程中体会到NuGet最大的好处就是可以搭建自己的类库服务器,在开发1.0和2.0期间,我们是一个系统一个解决方案,当两个系统之间存在交互时,就需要引用另一个系统的Dll文件,如果没有NuGet的话,每一次Dll文件更新,就需要去拷贝一份,放到项目的文件夹下,在重新引用,过程显得非常的繁琐。并且在我们3.0的时候,再次对系统进行了细化,每一个系统的每一个模块一个解决方案,也就是业务颗粒化。可想而知,如果还用拷贝的方式的话,有种作死的节奏~~现在用了NuGet,世界开始变得不同了。

怎么使用NuGet?


STEP1 在NuGet官网上注册并获取API Key

首先,你需要到NuGet上注册一个新的账号,然后在My Account页面,获取一个API Key,这个过程很简单,我就不作说明了。

STEP2 下载NuGet.exe

使用之前,需要先下载NuGet.exe,下载链接:http://nuget.codeplex.com/downloads/get/669083为了方便使用,设置机器的PATH环境变量,将其NuGet.exe的路径添加到PATH变量中。我放在F:\Program files下,所以路径为F:\Program files。

STEP3 设置API Key

在官网上找到你的API Key

打开CMD,找到NuGet.exe的路径,并运行,然后输入下面的命令:

nuget setApiKey <my_api_key>

'''示例'''
nuget setApiKey 5fadcb82-ee54-4164-853a-7d924aa2e059

运行结果:

SETP4 开发自己的类库

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace NuGetTest
{
    public class NugetTest
    {
        public static String ReturnInfo()
        {
            return "时光荏苒,岁月如梭,这一年我们就要毕业了!";
        }

    }
}

然后打开AssemblyInfo.cs文件,将assembly的属性设置好,记得再设置一下AssemblyVersion特性,以指定我们类库的版本。目前使用1.0.0.0版本:

using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;

''' 有关程序集的常规信息通过以下'''
''' 特性集控制。更改这些特性值可修改'''
''' 与程序集关联的信息。'''
[assembly: AssemblyTitle("NuGetTest")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("LingZaiCompany")]
[assembly: AssemblyProduct("NuGetTest")]
[assembly: AssemblyCopyright("Copyright   2015")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]

''' 将 ComVisible 设置为 false 使此程序集中的类型'''
''' 对 COM 组件不可见。如果需要从 COM 访问此程序集中的类型,'''
''' 则将该类型上的 ComVisible 特性设置为 true。'''
[assembly: ComVisible(false)]

''' 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID'''
[assembly: Guid("02721613-8a9e-4197-a1fa-b54b2d3c8320")]

''' 程序集的版本信息由下面四个值组成:'''

'''      主版本'''
'''      次版本'''
'''      生成号'''
'''      修订号'''

'''可以指定所有这些值,也可以使用“生成号”和“修订号”的默认值,'''
''' 方法是按如下所示使用“*”:'''
''' [assembly: AssemblyVersion("1.0.*")]'''
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]

设置好后,编译整个项目待用。

STEP5 产生并修改nuspec

nuspec是NuGet将项目打包成nupkg的输入文件,可以通过nuget spec命令产生。在命令提示符下,进入NugetTest.csproj文件所在目录,然后执行:

nuget spec

运行结果:

用记事本打开NuGetTest.nuspec文件,注意里面的$xxx$宏,这些就是引用了AssemblyInfo.cs中的设置值,在编译产生package的时候,会使用AssemblyInfo.cs中的相应值进行替换。完成编辑后,我们的nuspec文件如下:

<?xml version="1.0"?>
<package >
  <metadata>
    <id>$id$</id>
    <version>$version$</version>
    <title>$title$</title>
    <authors>$author$</authors>
    <owners>$author$</owners>
    <licenseUrl>http://LICENSE_URL_HERE_OR_DELETE_THIS_LINE</licenseUrl>
    <projectUrl>http://PROJECT_URL_HERE_OR_DELETE_THIS_LINE</projectUrl>
    <iconUrl>http://ICON_URL_HERE_OR_DELETE_THIS_LINE</iconUrl>
    <requireLicenseAcceptance>false</requireLicenseAcceptance>
    <description>Lingnugettest</description>
    <releaseNotes>Summary of changes made in this release of the package.</releaseNotes>
    <copyright>Copyright 2015</copyright>
    <tags>Tag1 Tag2</tags>
  </metadata>
</package>

注意两点:1、$description$使用AssemblyDescriptionAttribute的值进行替换,在产生package之前,一定要记得先编译项目,否则会提示$description$找不到的错误;

STEP6 产生类库包(Library Package)

在NugetTest.csproj的路径下,使用下面的命令产生类库包:

nuget pack NuGetTest.csproj

运行结果:

STEP7 发布类库包

使用下面的命令:

nuget push NuGetTest.1.0.0.0.nupkg

运行时遇到点问题:

上面的这个问题,主要原因是因为API Key 一台电脑只能用一个。如果用第二个API Key在同一台电脑上发布另一个package的话就无法发布,就会报这个错。

下面是发布成功的内容:

STEP8 测试以及更新类库包

在解决方案中右键解决方案—-管理解决方案的NuGet程序包—-联机,输入自己的类库包名。安装就可以了。

然后是更新,更新的时候记得更改AssemblyInfo.cs中的版本号的信息,然后再重新运行一遍下面的cmd:

nuget pack *.csproj

nuget push *.nupkg

在打开测试程序,在更新中找到自己更新的包更新就可以了。

善于利用工具,提高我们的开发效率!

时间: 2024-10-03 06:04:09

手把手教你----使用Nuget管理自己的项目库的相关文章

【手把手教你Maven】构建过程

转载自:http://www.cnblogs.com/xing901022/p/5002037.html [手把手教你Maven]构建过程 Maven是一款进行 依赖管理.项目构建.信息管理 为一体的工具. 它不像Make具有复杂的命令.也不像Ant需要手动编写大量的重复代码就能进行项目的构建: 还能提供强大的依赖库管理,避免jar包混乱与冲突: 还可以方便的管理项目的信息.知识产权等内容. 本篇的写作目的在于帮助那些之前没有使用过,或者是对maven还没有太多概念的朋友,学会使用maven,利

【云计算的1024种玩法】手把手教你如何编译升级 OpenResty

前言 在前面的 [云计算的1024种玩法]手把手教你如何编译一个高性能 OpenResty 已经介绍过如何安装 OpenResty 了,不过类似上面安装的教程那么多,但是升级的教程就不太多了.[云计算的1024种玩法]作为一个对你和对你的网站负责的系列教程,搞坏了你的服务器,就要搞好它- 在云栖大会的 Tech Insight 场上,云安全的专家的思路就是安全这种东西做好主动性强的预防就可以避免别动的对攻击进行防御,所以更新安全补丁升级软件的重要性是不言而喻的. 准备 准备 云翼计划 学生用户可

【云计算的1024种玩法】手把手教你如何编译一个高性能 OpenResty

介绍 本教程将介绍如何一步一步手动编译 OpenResty,OpenResty 是一个基于 Nginx 与 Lua 的高性能 Web 平台,拥有非常好的拓展性让服务器发挥更好性能.教程中将全部依赖 Linux 发行版组建中的依赖,而免除编译带来的后期维护成本. OpenResty 的额外拓展: OpenSSL 1.1.0,提供 ALPN 支持,支持 HTTP/2 Nginx-CT,透明证书提高 HTTPS 网站的安全性和浏览器支持 ngx_PageSpeed,Google 家的网站性能优化工具

完成端口(CompletionPort)详解 - 手把手教你玩转网络编程系列之三

转载自 PiggyXP(小猪) 完成端口(CompletionPort)详解 - 手把手教你玩转网络编程系列之三 手把手叫你玩转网络编程系列之三    完成端口(Completion Port)详解                                                              ----- By PiggyXP(小猪) 前 言         本系列里完成端口的代码在两年前就已经写好了,但是由于许久没有写东西了,不知该如何提笔,所以这篇文档总是在酝酿之中

阿里云DNS专家,手把手教你定位域名解析不生效

域名状态异常会导致网站不能访问吗?刚修改过域名解析,为什么不生效呢?如何查看解析是否生效呢?刚在注册商修改过DNS服务器,多长时间解析可以生效?为什么ping域名得到IP和配置的IP地址不一样?网站页面为什么打不开?- 中小企业在网站的实际运营中,以上这些问题,屏幕前你是否也曾遇到过,是否也因此困扰很久,长时间无法解决,内心万马奔腾. 如果你也感同身受,那么就请往下阅读,老司机手把手教你定位故障环节,针对性解决. 一. 网站访问过程 要想解决这类问题,首先要了解打开网站或APP的背后,究竟发生了

一步一步手把手教你做好一个网站

&http://www.aliyun.com/zixun/aggregation/37954.html">nbsp;   新手建站之实例教程,过来人手把手教你!制作一个网站总得来说分四步:申请域名.申请虚拟主机.制作网页,网站宣传推广! 1.申请域名:最好用COM,没有的话NET吧,CN现在没啥人注了;域名简短为宜,查询地址:http://www.e000.com/domain/?s=dark 2.申请虚拟主机:一般的现在的网站100M-1000M就差不多了,现在选择双线主机,比较

手把手教你用杰奇程序做书站之整合DISCUZ论坛

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 本文针对使用杰奇程序做书站的新人,高手可以略过了. 很多朋友都说杰奇自带的论坛不好看,功能设置也很少,想用其它类型的论坛比如DISCUZ这种类型的论坛程序.而杰奇官方的关于整合DISCUZ的教程又太少,整合起来很麻烦,对于新人来说更是难上加难.下面我把杰奇整合DISCUZ的方法介绍一下,希望对新人有所帮助. 一.安装杰奇程序.如何安装杰奇程序

手把手教你安装IBM PowerVC

本文讲的是 : 手把手教你安装IBM PowerVC   , [IT168技术]IBM PowerVC(Power虚拟化中心)是IBM 在2013年推出的一个企业级虚拟化管理软件,这让IBM Power服务器的繁重的虚拟化管理工作获得了空前的解放.PowerVC是基于OpenStack技术形成的一个功能强大,使用简便的IBM Power云资源以及虚拟机配置和管理工具.本文通过一个实际的案例,向读者详细阐述了PowerVC相关的安装技术,安装前的规划和准备以及安装过程,给读者一个快速了解Power

手把手教你接口自动化测试 – SoapUI &amp; Groovy

原文:手把手教你接口自动化测试 – SoapUI & Groovy 手把手教你接口自动化测试 – SoapUI & Groovy   关键词:SoapUI接口测试,接口自动化测试,数据驱动测试,SoapUI进阶使用, Groovy in SoapUI, SoapUI中Groovy的使用,数据分离.   阅读这篇文章需要一定的SoapUI基础,至少入过门,另外还需要一些Groovy的知识,当然如果你会java 也可以,这里用到的Groovy知识和Java很类似. 另外,本文的思路和我上一篇文