官网上的解释: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可以是我们的工作更方便,当我们的项目里要引用到的一些库时候,比如JQuery、Newtonsoft.Json、log4net等,我们需要从网上下载这些库,然后依次拷贝到各个项目中,当有的类库有更新时又不得不再重复一遍很是繁琐 ,这时就可以考虑使用NuGet来帮我们管理和更新这些类库,而且更新类库时会自动添加类库的相关引用,方便至极。
在我们做项目的过程中体会到NuGet最大的好处就是可以搭建自己的类库服务器,在开发1.0和2.0期间,我们是一个系统一个解决方案,当两个系统之间存在交互时,就需要引用另一个系统的Dll文件,如果没有NuGet的话,每一次Dll文件更新,就需要去拷贝一份,放到项目的文件夹下,在重新引用,过程显得非常的繁琐。并且在我们3.0的时候,再次对系统进行了细化,每一个系统的每一个模块一个解决方案,也就是业务颗粒化。可想而知,如果还用拷贝的方式的话,有种作死的节奏~~现在用了NuGet,世界开始变得不同了。
首先,你需要到NuGet上注册一个新的账号,然后在My Account页面,获取一个API Key,这个过程很简单,我就不作说明了。
使用之前,需要先下载NuGet.exe,下载链接:http://nuget.codeplex.com/downloads/get/669083为了方便使用,设置机器的PATH环境变量,将其NuGet.exe的路径添加到PATH变量中。我放在F:\Program files下,所以路径为F:\Program files。
在官网上找到你的API Key
打开CMD,找到NuGet.exe
的路径,并运行,然后输入下面的命令:
nuget setApiKey <my_api_key>
‘‘‘示例‘‘‘
nuget setApiKey 5fadcb82-ee54-4164-853a-7d924aa2e059
运行结果:
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")]
设置好后,编译整个项目待用。
nuspec是NuGet将项目打包成nupkg的输入文件,可以通过nuget spec
命令产生。在命令提示符下,进入NugetTest.csproj
文件所在目录,然后执行:
nuget spec
运行结果:
用记事本打开NuGetTest.nuspec
文件,把需要替换的信息替换掉,不需要的tag
全部删掉,注意里面的$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>
<requireLicenseAcceptance>false</requireLicenseAcceptance>
<description>NuGetTest</description>
<releaseNotes>releaseNotes</releaseNotes>
<copyright>Copyright 2015</copyright>
</metadata>
</package>
注意两点:1、$description$
使用AssemblyDescriptionAttribute
的值进行替换,在产生package之前,一定要记得先编译项目,否则会提示$description$
找不到的错误;2、releaseNotes
如果没有,就直接删掉这个节点,如果有,则填入自己的内容,不要使用默认内容,否则会在下一步产生警告信息。
在NugetTest.csproj的路径下,使用下面的命令产生类库包:
nuget pack NuGetTest.csproj
运行结果:
使用下面的命令:
nuget push NuGetTest.1.0.0.0.nupkg
运行时遇到点问题,正在调:
解决完之后,会更新到博客中。。。。。。
原文地址:http://blog.csdn.net/zlts000/article/details/46272181