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

简介: <div class="markdown_views"><p></p><div class="toc"><div class="toc"><ul><li><a href="#%E4%BB%80%E4%B9%88%E6%98%AFnuget">什么是NuGet</a></li><li><a href="#%E4%B8%BA%E4%BB%80%E4%B9%88%E7%9


什么是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

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

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

相关文章
|
前端开发 程序员 开发工具
前端反卷计划-组件库-01-环境搭建
前端组件库系列:环境搭建
前端反卷计划-组件库-01-环境搭建
|
5月前
|
开发工具 数据安全/隐私保护 git
Lerna 使用教程 -- 开发脚手架的流程和核心命令详解
Lerna 使用教程 -- 开发脚手架的流程和核心命令详解
214 0
|
7月前
|
JavaScript Java 测试技术
基于SpringBoot+Vue的教学资源库附带文章和源代码
基于SpringBoot+Vue的教学资源库附带文章和源代码
53 2
|
JavaScript Java 测试技术
基于SpringBoot+Vue的在线教学平台附带文章和源代码
基于SpringBoot+Vue的在线教学平台附带文章和源代码
48 0
|
7月前
|
JavaScript 前端开发 Ruby
NPM 制作命令行工具 - 进阶辅助库
NPM 制作命令行工具 - 进阶辅助库
46 0
|
JSON 缓存 NoSQL
重新更新VScode配置(C/C++)——负责任、手把手教学,亲测有效
对于C/C++的编程环境来说,目前我们所接触到的、所用到的,除了vim以外,大众用的、尤其是学生群体用的主要是有三种。
1349 1
重新更新VScode配置(C/C++)——负责任、手把手教学,亲测有效
|
IDE 开发工具 C++
MDK5软件入门之——基础工程创建及下载和调试
MDK5软件入门之——基础工程创建及下载和调试
424 0
MDK5软件入门之——基础工程创建及下载和调试
|
缓存 安全 Go
Go 开发常用操作技巧--模块管理
Go 依赖管理经历了 3 个阶段,GOPATH、Go Vendor、Go Module。
129 0
Go 开发常用操作技巧--模块管理
|
Java Maven 开发者
搭建项目环境(创建工程) | 学习笔记
快速学习搭建项目环境(创建工程)
|
C# C++ 计算机视觉
Qt开发Activex笔记(一):环境搭建、基础开发流程和演示Demo
Qt开发Activex笔记(一):环境搭建、基础开发流程和演示Demo