Nuget简单来说是一个代码包管理工具,方便的控制代码的版本以及使用。

在VS创建的标准类库(现在类库分为两个版本一个是framework类库一个是标准类库),必须发布到Nuget,才能在新项目中使用。

提示:

    1、下面说明使用命令行,又说使用VS xxxx 的开发人员命令提示符,又说使用powershell的,又说使用cmd,其实都可以,如果熟悉批处理文件可以写成批处理文件一键发布,我尝试过写成批处理文件,但是有两个问题,如何修改配置文件nuspec和生成nupkg上传nupkg时匹配文件名,使用*号匹配文件名有时会出现错误,如果你知道怎么写,还望告知

    2、更新包时,注意在项目属性文件中修改版本以及重新生成

    3、文章编写是难免有些错别字或其他错误,如果发现还望告知

今天,总结一下发布Nuget代码包的方法步骤。

第一步:创建一个类库项目

    很简单,就不详细说了,创建个类库后,可以直接在class1中编写几个方法,或者新建类写几个方法,如果不想做测试,也可以直接拿你准备发布的类库项目直接操作。

第二步:注册Nuget账号

    这个账号用来管理你的ApiKey和发布的项目。

第三步:获取ApiKey

    登陆后,点击右上角你的用户名,下拉菜单中API Keys选项

    打开新页面后,下方有两个非常大号的标题Create和Manage,现在Manage下是什么都没有的,你需要先点击Create创建一个APIKey

    需要填写Key的一些信息如:

        Key Name:密钥的名字,用来区分多个密钥

        Expire In:密钥的有效期,可选1天,90天,180天,270天,365天

        Select Scopes:选择作用范围

                push:发布

                        Push new packages and package version:发布新的包和更新包的版本

                        Push only new package versions:只能更新包的版本

                Unlish package:个人理解可能是取消包的索引,就是让某个包在Nuget管理器中搜索不到,只能通过恢复操作安装

        Glob Pattern:我是直接输入的*,该选项的具体功能应该是匹配可以操作那些项目。

        Available Packages:如果没有上传过包,这里是空的,上传过的包都会在这里显示,可以多选,功能应该是选择可以操作那些项目。

    填写完成信息后,点击create完成创建。

    回到API Keys页面下,Manage下面就会出现我们创建的Key

    每一个key会显示一个大钥匙的图标,右边有四行文字

    第一行是Key的名字

    第二行是有效期和作用范围

    第三行是可以管理那些包,我的都是Golb Pattern:*,因为我没具体选包做测试,直接输入了*

    第四行是一些选项,第一个Copy:复制Key,这样我们就获取到了Key,注意这个选项过一段时间会消失,不能在次复制Key,如果Key丢失了了,那么找到第三个Regenerate点击重新生成Key这是,Copy选项就又会出现了,但是这次复制的Key和之前的那个Key不是同一个,之前的那个就失效了,第二个是Edit:可以编辑这个Key可以管理那些项目,也就是创建Key的最后两个选项,最后一个第四个是删除,删除这个Key。

第四步:下载Nuget.exe

    打开Nuget.org,菜单栏找到Download,打开页面下载即可,地址:https://www.nuget.org/downloads

    最左边是命令行客户端,中间提示说VS2017已经集成了,右边是VS2015和VS2013扩展包的下载

第五步:配置环境

    这一步有两种做法,一种一劳永逸,一种每次都要复制一遍,根据个人习惯选择吧。

    第一种:在C盘或者其他盘(建议C盘),创建一个目录,将Nuget.exe复制进去,然后将这个目录添加到环境变量,这个在对每个项目操作的时候都可以使用Nuget的命令

    第二种:复制Nuget.exe到你要发布的项目的项目目录,csproj的目录不是sln,sln是解决方案目录,然后就可以在这个项目目录下使用Nuget的命令

第六步:设置密钥

    在命令行下跳转到项目目录,运行如下指令,后面的xxxx代表哦的是密钥

    nuget setApiKey     xxxxxxx-xxxxxxx-xxxxxxx-xxxxxxx

第七步:配置文件设置

    在项目目录下执行命令:

    nuget spec

    会生成一个后缀为nuspec的文件,里面配置了发布项目包的信息内容如下:

    <?xml version="1.0"?>

    <package >

      <metadata>

        <!-- 托管库中唯一标识符 -->

        <id>$id$</id>

        <!-- 解析依赖时使用的包版本号 -->

        <version>$version$</version>

        <title>$title$</title>

        <!-- 作者 -->

        <authors>admin</authors>

        <!-- 所有者 -->

        <owners>admin</owners>

        <!-- 证书 -->

        <licenseUrl>http://guomingxin.site/</licenseUrl>

        <!-- 项目URL -->

        <projectUrl>http://guomingxin.site/</projectUrl>

        <!-- 该图标用于Visual Studio的包管理UI -->

        <iconUrl>http://guomingxin.site/favicon.ico</iconUrl>

        <!-- 如果是true,这个值提示用户在何时接受安装包许可证 -->

        <requireLicenseAcceptance>false</requireLicenseAcceptance>

        <!-- 可以在包管理UI中使用描述。请注意,nuget.org画廊使用您在门户中添加的信息 -->

        <description>Class Nuget Lib</description>

        <!-- 关于这个特殊版本的任何细节 -->

        <releaseNotes>

          我的测试包

        </releaseNotes>

        <!-- 版权信息 -->

        <copyright>Copyright 2017</copyright>

        <!-- 标签出现在图库中,可以用于标记搜索 -->

        <tags>Tag1 Tag2</tags>

        <!-- 当安装包时,自动安装下列依赖项 -->

        <dependencies>

            <dependency id="Newtonsoft.Json" version="9.0" />

        </dependencies>

      </metadata>

    </package>

    这是我修改过的nuspec文件,没修改过的是一个默认说明

    注意:

            $xxx$这个内容如果项目属性文件中包含,会直接引用项目属性中的值,其他根据注释修改内容,不要保持默认,保持默认,执行时会有警告信息。

            Id必须唯一;owners这个选项貌似没有用处,因为发布后的所有者都是你注册的账户名

第八步:运行命令生成发布包文件

    在命令行下运行:

    nuget pack xxxxx.csproj

    会生成xxx.nupkg文件,这个就是我们需要上传的文件

第九步:上传

    运行上传命令:

    nuget push xxxx.nupkg -Source https://www.nuget.org/

    网上的好多版本都是没有-Source https://www.nuget.org/,会报Source parameter was not specified.这个错误,加上源地址即可,个人服务器将url修改为个人服务器地址域名。

    如果上传还是失败,到官网上手动上传,查看问题,是不是有重复的ID等问题。

    官网菜单有Upload页面,打开后中间输入框选择你要上传的nupkg文件上传即可。

备注:

    更新包版本的时候,省略前五步,直接从第六步开始操作即可

    当然如果忘记密钥,那么还需要执行第三步获取,只不过是直接登陆网站重置密钥,然后拷贝即可

    缺少nuget.exe文件如同第四步和第五步

文章信息

创建时间
2023-12-11
作者
郭铭心
是否所有人可见
所有人可见
最后修改日期
2023-12-11
点击数
183