示例:在Nuget發佈自己的包的步驟

一、目的:很多時候都在用第三方的Nuget包,現成的輪子可以減少很多工作量,同時我們也可以造輪子供自己和其他人使用,本示例主要演示如何發佈dll到Nuget上

 

 

二、環境:

Win10、VS2019、nuget.exe、nuget.org 帳戶

 

三、步驟:

 

1、創建nuget.org 帳戶

    註冊地址 https://www.nuget.org/

 

2、下載nuget.exe

    下載地址:https://dist.nuget.org/win-x86-commandline/latest/nuget.exe

    將nuget.exe 設置系統環境變量,方便使用命令,也可以不設置,不設置則要使用全路徑

3、創建一個程序集

      設置程序集描述信息,這些會生成在nuget包中

// 有關程序集的一般信息由以下
// 控制。更改這些特性值可修改
// 與程序集關聯的信息。
[assembly: AssemblyTitle("我的標題")]
[assembly: AssemblyDescription("我的說明")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("我的公司")]
[assembly: AssemblyProduct("我的產品")]
[assembly: AssemblyCopyright("Copyright ©  2019")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]

// 將 ComVisible 設置爲 false 會使此程序集中的類型
//對 COM 組件不可見。如果需要從 COM 訪問此程序集中的類型
//請將此類型的 ComVisible 特性設置爲 true。
[assembly: ComVisible(false)]

// 如果此項目向 COM 公開,則下列 GUID 用於類型庫的 ID
[assembly: Guid("70dabedf-1206-4a25-a55a-d54ec5ec14a5")]

// 程序集的版本信息由下列四個值組成: 
//
//      主版本
//      次版本
//      生成號
//      修訂號
//
//可以指定所有這些值,也可以使用“生成號”和“修訂號”的默認值
//通過使用 "*",如下所示:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]

    確保修改後重新生成程序集

4、生成nuget清單文件(.nuspec )

主要通過三個命令:nuget spec、nuget packnuget push

在解決方案.csject目錄下執行cmd命令 nuget spec

示例:

C:\Users\Hebiangu\source\repos\hebiangu.nugettest\hebiangu.nugettest>nuget spec
已成功創建“hebiangu.nugettest.nuspec”。

此時,在同級目錄下生成了一個清單文件,內容如下:

<?xml version="1.0"?>
<package >
  <metadata>
    <id>$id$</id>
    <version>$version$</version>
    <title>$title$</title>
    <authors>$author$</authors>
    <owners>$author$</owners>
    <licenseUrl>http://LICENSE_URL_HERE_OR_DELETE_THIS_LINE</licenseUrl>
    <projectUrl>http://PROJECT_URL_HERE_OR_DELETE_THIS_LINE</projectUrl>
    <iconUrl>http://ICON_URL_HERE_OR_DELETE_THIS_LINE</iconUrl>
    <requireLicenseAcceptance>false</requireLicenseAcceptance>
    <description>$description$</description>
    <releaseNotes>Summary of changes made in this release of the package.</releaseNotes>
    <copyright>Copyright 2019</copyright>
    <tags>Tag1 Tag2</tags>
  </metadata>
</package>

 

  5、執行打包命令,生成.nupkg文件

在解決方案.csject目錄下執行cmd命令 nuget pack

示例:

C:\Users\HeBianGu\source\repos\hebiangu.nugettest\hebiangu.nugettest>nuget pack
正在嘗試從“hebiangu.nugettest.csproj”生成程序包。
MSBuild auto-detection: using msbuild version '16.0.462.64354' from 'D:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Current\bin'.
正在打包“C:\Users\HeBianGu\source\repos\hebiangu.nugettest\hebiangu.nugettest\bin\Debug”中的文件。
正在對元數據使用“hebiangu.nugettest.nuspec”。
Successfully created package 'C:\Users\HeBianGu\source\repos\hebiangu.nugettest\hebiangu.nugettest\hebiangu.nugettest.1.0.0.nupkg'.

 

此時在同級目錄下會生成一個.nupkg文件,此時打包任務已經完成

 

6、上傳發布Nuget包

首先、獲取密鑰:登錄nuget.org 帳戶,在右上角下拉菜單中找到API Key,點擊Create創建一個密鑰,輸入Key Name,輸入Glob Pattern 爲 *,點擊創建,完後點擊Copy複製密鑰 如: oy2lfjcetwxsiutysnje9867c5s83hnf6aj5q,注意需要自己保存密鑰

 

 

 

 

 

其次、上傳包

在同級目錄執行如下命令即可

nuget push hebiangu.nugettest.1.0.0.nupkg oy2lfjcetwxsiutysnje9867c5s83hnf6aj5q -Source https://api.nuget.org/v3/index.json

hebiangu.nugettest.1.0.0.nupkg :是打包最終生成的.nupkg文件

oy2lfjcetwxsiutysnje9867c5s83hnf6aj5q:是產品密鑰,產品密鑰需要在註冊nuget.org 帳戶

示例:

C:\Users\HeBianGu\source\repos\hebiangu.nugettest\hebiangu.nugettest>nuget push hebiangu.nugettest.1.0.0.nupkg oy2lfjcetwxsiutysnje9867c5s83hnf6aj5q -Source https://api.nuget.org/v3/index.json
Pushing hebiangu.nugettest.1.0.0.nupkg to 'https://www.nuget.org/api/v2/package'...
  PUT https://www.nuget.org/api/v2/package/
警告: <licenseUrl> element will be deprecated,please consider switching to specifying the license in the package. Learn more: https://aka.ms/deprecateLicenseUrl.
  Created https://www.nuget.org/api/v2/package/ 1831ms
Your package was pushed.

以上就是發佈的全部過程

 

注意:

1、創建的 hebiangu.nugettest.1.0.0 名稱不能和服務器上已有的包名重複,否則會報403錯誤,檢查方式是到nuget上搜索一下有沒有該名稱的包

2、上傳的包會通過審查,需要等一段時間大概一個小時以內才能搜索到

 

3、創建一個批處理文件一鍵發佈

    創建文件:nuget-push.bat

    文件內容如下,將批處理文件放到程序集目錄下執行即可一鍵發佈:

cd  %~dp0

nuget spec

nuget pack

nuget push  hebiangu.nugettest.1.0.0.nupkg oy2leteteymeerertetedc3aufgfool4is6aj5q -Source https://api.nuget.org/v3/index.json

pause

 

 

此時在nuget.org和VS中可以搜索並應用自己的包了

 

 

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章