使用NuGet管理自己的包

来源:互联网 发布:淘宝卖家打印订单 编辑:程序博客网 时间:2024/05/13 12:18

       如果我有一个早已封装好的dll,要让10个人使用,再修改后重新生成dll后,要传给这10个人,可不可以通过一个工具,让他来管理我的dll包,我在修改包后,其他人只需更新,摆脱粘贴复制的苦恼。其实NuGet就帮我解决了这个问题。

        NuGet是一个Visual Studio的扩展,通过这个扩展,我们可以非常方便地在Visual Studio中安装或更新项目中所需要的第三方组件,同时也可以通过NuGet来安装一些Visual Studio的插件等。这样就可以做到公共组件共享,现在我将一步步介绍如何以将自己所开发的类库包发布到nuget上,供多人使用。

第一:在NuGet上注册并获取API Key

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

第二:下载NuGet.exe

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

第三:设置API Key

        在NuGet官网登录,找到自己的ApiKey,然后使用以下命令设置NuGet API Key:

               nuget setApiKey <my_api_key>

         例如我的ApiKey为:

        
       因此我的输入是:

               

第四:开发自己的类库

       写自己的类库:

<span style="font-size: 18px;">using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;n</span><span style="font-size:18px;">amespace MyCloass{    public class Helper    {            public static String GetName()            {                return "zhudan";            }    }}</span>
       然后,打开AssemblyInfo.cs文件,将assembly的属性设置好,记得再设置一下AssemblyVersion特性,以指定我们类库的版本。目前使用1.0.0.0版本:

        

<span style="font-size:18px;">using System.Reflection;using System.Runtime.CompilerServices;using System.Runtime.InteropServices;// 有关程序集的常规信息通过以下// 特性集控制。更改这些特性值可修改// 与程序集关联的信息。[assembly: AssemblyTitle("MyClass")][assembly: AssemblyDescription("")][assembly: AssemblyConfiguration("")][assembly: AssemblyCompany("Microsoft")][assembly: AssemblyProduct("MyCloass")][assembly: AssemblyCopyright("Copyright © Microsoft 2014")][assembly: AssemblyTrademark("")][assembly: AssemblyCulture("")]// 将 ComVisible 设置为 false 使此程序集中的类型// 对 COM 组件不可见。如果需要从 COM 访问此程序集中的类型,// 则将该类型上的 ComVisible 特性设置为 true。[assembly: ComVisible(false)]// 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID[assembly: Guid("abf1fb63-7d11-48d9-8db6-64fd9b0bef0f")]// 程序集的版本信息由下面四个值组成:////      主版本//      次版本 //      生成号//      修订号//// 可以指定所有这些值,也可以使用“生成号”和“修订号”的默认值,// 方法是按如下所示使用“*”:// [assembly: AssemblyVersion("1.0.*")][assembly: AssemblyVersion("1.0.0.0")][assembly: AssemblyFileVersion("1.0.0.0")]</span>

第五:产生并修改nuspec

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

        nuget spec
       提示创建成功:

              



         记事本打开MyCloass.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>MyClass</description>    <copyright>Copyright 2014</copyright>  </metadata></package>

第六:产生类库包(Library Package)

        同样在MyCloass.csproj路径下,使用下面的命令产生NuGet类库包:     

                nuget pack <span style="font-size:18px;">MyCloass</span>.csproj
        成功后提示:

             

第七:发布类库包

        发布类库包使用命令:   

          nuget push MyCloass.1.0.0.0.nupkg
        完成后提示成功:

                

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

                 

第八:测试自己发布的类库包

        新建一个应用程序,在项目上点右键,选择管理解决方案的Nuget程序包;

                

        在搜索框中输入Myclass,此时我们发布的Package已经可以显示了:

                  

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

             

        这样就可以引用,写入自己的代码了。

第九:更新类库

       随着类库的开发,必然会有版本的更新。更新类库很简单,只需要在AssemblyInfo.cs中更新一下版本号,然后重新执行上面的第六和第七就可以了。执行第七的时候,nupkg的文件名应该使用新版本的文件名(修改版本号就可以了)。

       现在就来修改项目,将返回值修改了,打开AssemblyInfo.cs,修改版本号为1.1.1.1,重新编译、产生、发布。

            

       再打开测试程序,更新新的MyClass。

            
       Nuget会自动保存包的历史版本,可以在vs中根据自己的需要引用不同版本的包,传入的包不能够删除,只能更改它在vs中显示不显示。

总结:

        善于利用工具,提高效率!


 

       

4 0