使用NuGet管理项目的DLL

使用NuGet管理项目的DLL

当我们的项目里要引用到的一些库时候,比如JQuery、Newtonsoft.Json、log4net等,我们需要从网上下载这些库,然后依次拷贝到各个项目中,当有的类库有更新时又不得不再重复一遍很是繁琐 ,这时就可以考虑使用NuGet来帮我们管理和更新这些类库,而且更新类库时会自动添加类库的相关引用。

我们可以搭建私有的NuGet类库服务器共享,来管理项目中的DLL

一、将自己所开发的类库包发布到nuget

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

首先,你需要到NuGet上注册一个新的账号,然后在My Account页面,获取一个API Key

注册地址:https://www.nuget.org/

2、下载NuGet。exe

下载地址:http://nuget.codeplex.com/downloads/get/669083,并将它放到和.csproj文件在同一目录下

3、设置API Key

开始--VS2012--Visual Studio Tools--VS2012开发人员命令提示,输入以下命令设置

NuGet API Key:    nuget setApiKey <my_api_key>

例如

4、设置AssemblyInfo.cs文件中的属性版本等,第一次就使用1.0.0.0吧.保存设置并编译整个项目.

5、产生并修改nuspec

nuspec是NuGet将项目打包成nupkg的输入文件,可以通过nuget spec命令产生。在命令提示符下,进入MyCloass.csproj文件所在目录,我的目录为:C:\Users\ZhuDan\Desktop\wyx\MyCloass\MyCloass  然后执行一下命令:

nuget spec 

将生成.nuspec文件

比如我这里生成了ITOO.Library.EFBase.nuspec

6、记事本打开ITOO.Library.EFBase.nuspec文件,把需要替换的信息替换掉,不需要的tag全部删掉,注意里面的$xxx$宏,这些就是引用了AssemblyInfo.cs中的设置值,在编译产生package的时候,会使用AssemblyInfo.cs中的相应值进行替换。$$之间的可以不用管,会自动引用AssemblyInfo.cs中的设置值,完成编辑后,例如nuspec文件如下:

  •  
  • XML 代码   复制
  • 
    <?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>MyClass</description>
        <copyright>Copyright 2014</copyright>
      </metadata>
    </package>
    
    		
  • 7、产生类库包

    在命令提示符下,进入.csproj的文件目录,输入命令生成类库包,以我的为例,命令如下:

    Nuget packITOO.Library.EFBase.csproj

    成功后生成.nupkg文件,如我这里生成了ITOO.Library.EFBase.1.0.0.0.nupkg

    8、发布类库包

    输入命令:nuget push ITOO.Library.EFBase.1.0.0.0.nupkg,会提示发布成功.

    此时登录NuGet,进入Manage My Packages下,可以看到自己刚刚发布的包。

    二、使用NuGet引用自己发布的类库包

    在项目中右键选择 管理解决方案的Nuget程序包,搜索上面已经成功发布的包名

    单击安装,NuGet会自动分析组件依赖关系,然后把所需要的所有程序集都下载下来并添加到项目引用中。

    三、发布到NuGet的项目更新

    随着类库的开发,必然会有版本的更新。更新类库很简单,只需要在AssemblyInfo.cs中更新一下版本号,然后重新执行生成类库包并发布,即同样还是命令提示符下,进入.csproj的文件目录,分别运行两个命令:

    1、生成类库包

    例如:Nuget pack ITOO.Library.EFBase.csproj

    2、发布类库包

    nuget push ITOO.Library.EFBase1.0.0.1.nupkg

    四、更新刚才修改的NuGet项目

    在项目上右键选择 管理解决方案的Nuget程序包,在更新中可以看到我们要引用的类库包,点击更新即可。

    Nuget会自动保存包的历史版本,可以在vs中根据自己的需要引用不同版本的包

    标签: