使用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 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中根据自己的需要引用不同版本的包