<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          如何從零開(kāi)發(fā)一個(gè)NuGet軟件包?

          共 3037字,需瀏覽 7分鐘

           ·

          2020-12-24 08:44


          作者:依樂(lè)祝
          首發(fā)地址:https://www.cnblogs.com/yilezhu/p/14175019.html

          我想目前每個(gè).net開(kāi)發(fā)人員都應(yīng)該知道nuget.org和NuGet軟件包吧。但是,您是否曾經(jīng)嘗試并創(chuàng)建過(guò)一個(gè)nuget包呢?Nuget軟件包比較容易引入到類庫(kù)中。因此,可以使用NuGet軟件包管理器將nuget軟件包添加到任何項(xiàng)目中。

          Nuget包的剖析

          Nuget軟件包不僅是dll文件。NuGet包是可移植的,它包含您要放入.Net項(xiàng)目中的所有內(nèi)容。您可以在其中放置txt文件或png文件。這就是為什么我們稱它們?yōu)椤鞍薄D梢源虬恍╅_(kāi)發(fā)文件,并將它們以.nupkg格式在項(xiàng)目之間移動(dòng)。
          我剛剛解壓縮了InputKit的nuget包,您可以在下圖中看到nupkg文件的樹(shù)狀視圖。

          因此,只需查看其中的文件夾和文件。
          icon.png:
          這是您的NuGet包的圖標(biāo)文件。現(xiàn)在已將其嵌入.nupkg中,但在早期版本的NuGet中只能定義為url。
          .nuspec
          nuspec是關(guān)于nuget包的元數(shù)據(jù)文件。在早期版本中,它曾經(jīng)用于打包nuget包。但是在新的dotnet CLI中,此文件是由roslyn編譯器從您的.csproj文件生成的。它包括軟件包的目標(biāo)框架,名稱,許可證,圖標(biāo),標(biāo)簽,與其他包的依賴關(guān)系以及其中描述的要放置到添加的項(xiàng)目中的靜態(tài)文件。
          [Content_Types] .xml:
          這是一個(gè)元數(shù)據(jù)文件,提供了程序包中包含的每個(gè)文件擴(kuò)展名。
          lib:
          軟件包的主文件夾。此文件夾包括您的構(gòu)建輸出。換句話說(shuō),它在構(gòu)建之后包含了bin文件夾。所以您可以看到不同目標(biāo)框架的文件夾與項(xiàng)目輸出相同。例如,如果您的.csproj文件是多目標(biāo)的,您可以像我一樣看到每個(gè)目標(biāo)框架的文件夾。
          package:
          此文件夾包含有關(guān)您的包的更多元數(shù)據(jù)文件。此數(shù)據(jù)與您在nuget軟件包列表中看到的數(shù)據(jù)相同:“創(chuàng)建者”,“描述”,“標(biāo)識(shí)符”,“版本”和“關(guān)鍵字”。
          _rels / .rels:
          這是xml格式的文件擴(kuò)展名,由Microsoft創(chuàng)建和使用。您可以從此處查看有關(guān).rels格式的更多信息。它主要用于Microsoft Office。

          創(chuàng)建你的第一個(gè)庫(kù)

          每一個(gè)開(kāi)發(fā)者都應(yīng)該知道類庫(kù)。它們很難移動(dòng)或用于不同的項(xiàng)目。因?yàn)樗鼈兊妮敵鍪?strong>dll文件。在本文中,我不會(huì)談?wù)撊绾螛?gòu)建庫(kù)。我將展示如何將它們轉(zhuǎn)換為可移植的nuget包。因此,讓我們從第一步開(kāi)始。
          1-選擇目標(biāo)框架
          選擇目標(biāo)框架是非常重要!只需計(jì)劃你的項(xiàng)目并定義依賴項(xiàng)即可。如果您的依賴項(xiàng)需要.net core(如實(shí)體框架)或以.Net core為目標(biāo)的對(duì)象,只需將目標(biāo)框架選為“.Net core”。但如果不是,請(qǐng)始終嘗試在“.Net Standard”上構(gòu)建庫(kù)。順便說(shuō)一句,你可以建立一個(gè)多目標(biāo)項(xiàng)目。您可以從此處閱讀有關(guān)多目標(biāo)項(xiàng)目的更多信息。
          2-填充元數(shù)據(jù)
          在我們所處的時(shí)代,MetaData是最重要的事情。MetaData可以更輕松地找到您的包裹并最好地描述其作用。因此,請(qǐng)正確填寫(xiě)您的元數(shù)據(jù)。在Visual Studio中創(chuàng)建類庫(kù)后,只需右鍵單擊并轉(zhuǎn)到屬性。您可以在“打包”標(biāo)簽下看到所有可以填寫(xiě)的字段。
          如果您的環(huán)境不是Visual Studio,則可以直接修改.csproj文件,如下所示。

          "Microsoft.NET.Sdk">


          netstandard2.0
          My.Package
          1.0.1
          enisn
          enisn
          My Package
          This is my packages description.
          All rights reserved
          MIT
          https://github.com/enisn/MyPackage
          https://github.com/enisn/MyPackage
          my,awesome,package
          Hot fixes



          3-打包!
          這就是奇跡發(fā)生的地方!準(zhǔn)備好你的代碼,右鍵單擊您的項(xiàng)目,然后單擊“打包”按鈕。您的nupkg文件將在您項(xiàng)目的bin文件夾中等待著您。
          如果您的開(kāi)發(fā)環(huán)境不是Visual Studio,則可以使用命令提示符來(lái)執(zhí)行此操作,如下所示:

          dotnet pack My.Package.csproj

          4-與全世界分享!
          轉(zhuǎn)到nuget.org并登錄到你的帳戶。然后導(dǎo)航到“發(fā)布”選項(xiàng)卡,并將您的.nupkg文件拖放到該頁(yè)面中。填寫(xiě)有關(guān)包裹的信息字段并提交。僅此而已!這是在nuget.org上發(fā)布軟件包的最簡(jiǎn)單方法。
          使用命令行工具
          但是您也可以在命令行下執(zhí)行此操作。讓我們來(lái)看看這種方式。
          首先,您需要一個(gè)Api-Key與nuget API通信。轉(zhuǎn)到nuget.org上的個(gè)人資料,然后找到“?API密鑰”部分,如下所示。

          創(chuàng)建一個(gè)API密鑰并保存它。您將無(wú)法再次看到它。因此,您需要保存它。
          現(xiàn)在,從打包開(kāi)始,然后您可以通過(guò)CLI進(jìn)行推送。
          dotnet pack --configuration Release -o .packages/
          這意味著在發(fā)布模式下構(gòu)建項(xiàng)目,并將輸出文件放置到“ .packages”文件夾中。因此,我們可以輕松地從.pacakges文件夾中找到輸出。因此,您的nupkg文件已準(zhǔn)備好推送。使用以下命令將軟件包推送到nuget.org或您自定義的源:
          dotnet nuget push .\.packages\My.Pacakge.1.0.1.nupkg --source [https://api.nuget.org/v3/index.json](https://api.nuget.org/v3/index.json) --api-key YOUR_API_KEY --skip-duplicate
          我使用了?skip-duplicate?參數(shù),因?yàn)槿绻渲?CI?,則可以多次推送相同版本的軟件包,而如果要推送已經(jīng)存在的版本,則會(huì)出現(xiàn)錯(cuò)誤,并且?CI-CD?進(jìn)程將失敗。因此,使用?skip-duplicate?參數(shù)忽略已存在的版本推送,并成功完成操作。
          感謝您的閱讀,我們下篇文章見(jiàn)!
          翻譯自:https://enisn.medium.com/how-to-develop-a-nuget-package-d37400d9e1d3


          往期精彩回顧




          【推薦】.NET Core開(kāi)發(fā)實(shí)戰(zhàn)視頻課程?★★★

          .NET Core實(shí)戰(zhàn)項(xiàng)目之CMS 第一章 入門(mén)篇-開(kāi)篇及總體規(guī)劃

          【.NET Core微服務(wù)實(shí)戰(zhàn)-統(tǒng)一身份認(rèn)證】開(kāi)篇及目錄索引

          Redis基本使用及百億數(shù)據(jù)量中的使用技巧分享(附視頻地址及觀看指南)

          .NET Core中的一個(gè)接口多種實(shí)現(xiàn)的依賴注入與動(dòng)態(tài)選擇看這篇就夠了

          10個(gè)小技巧助您寫(xiě)出高性能的ASP.NET Core代碼

          用abp vNext快速開(kāi)發(fā)Quartz.NET定時(shí)任務(wù)管理界面

          在ASP.NET Core中創(chuàng)建基于Quartz.NET托管服務(wù)輕松實(shí)現(xiàn)作業(yè)調(diào)度

          現(xiàn)身說(shuō)法:實(shí)際業(yè)務(wù)出發(fā)分析百億數(shù)據(jù)量下的多表查詢優(yōu)化

          關(guān)于C#異步編程你應(yīng)該了解的幾點(diǎn)建議

          C#異步編程看這篇就夠了


          瀏覽 94
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  中国在线黄色电影 | 天天草天天射 | 欧美做爱高潮白 | 国产又爽 又黄 免费观看视频 | 成人午夜性爱视频 |