使用NuGet管理自己的包

       如果我有一个早已封装好的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中显示不显示。

总结:

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


 

       

评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值