使用批處理腳本自動(dòng)生成并上傳NuGet包(操作方法)
Hello 大家好,我是TANZAME,我們又見面了。
NuGet是什么這里就不再重復(fù)啰嗦,園子里一搜一大把。今天要跟大家分享的是,在日常開發(fā)過程中如何統(tǒng)一管理我們的包,如何通過批處理腳本生成包并自動(dòng)上傳到 NuGet。在實(shí)際項(xiàng)目開發(fā)過程中我們要上傳自己的包,一般的步驟都是:nuget spec => nuget pack => nuget push,一個(gè)包都要至少重復(fù)三個(gè)動(dòng)作,如果有 N個(gè)包那就要重復(fù) N*3次,想想都不能忍,所以便有了今天的分享主題。
生成目錄
既然是統(tǒng)一管理,生成的包自然是放在同一個(gè)文件夾,而不是分散在各個(gè) .proj目錄里。這里我們?cè)诮鉀Q方案所在目錄新建一個(gè)目錄,這樣做的目的是方便 bat腳本找到解決方案下面的子項(xiàng)目。比如我這里新建的是 .nuget這個(gè)目錄,需要注意的是如果目錄名稱有特殊字符的話不能直接右鍵新建,需要用命令提示符,直接在解決方案所在目錄使用快捷鍵 SHIFT +右鍵就能直接打開命令提示符,這樣可以省去一大堆 cd的操作。
下載 NuGet
到 NuGet 官網(wǎng)下載命令行接口(CLI)。nuget.exe
提供了完整的 nuget 功能, 可用于安裝、創(chuàng)建、發(fā)布和管理包, 而無需對(duì)項(xiàng)目文件進(jìn)行任何更改。
- 請(qǐng)?jiān)L問nuget.org/downloads,并選擇 NuGet 3.3 或更高版本(2.8.6 與 Mono 不兼容)。始終建議使用最新版。若要將包發(fā)布到 nuget.org,版本至少必須是 4.1.0。
- 每次下載都直接下載
nuget.exe
文件。讓瀏覽器將文件保存到選定文件夾。此文件不 是安裝程序;如果直接在瀏覽器中運(yùn)行,就不會(huì)看到任何內(nèi)容。 - 將文件夾添加到
nuget.exe
中放置 PATH 環(huán)境變量的位置,這樣就可以從任意位置使用 CLI 工具。這里我們把它放在上一步新建的 .nuget文件夾下面,并設(shè)置 PATH環(huán)境變量。
生成清單
.nuspec文件是包含包元數(shù)據(jù)的 XML 清單, 此清單同時(shí)用于生成包以及為使用者提供信息。這個(gè)清單文件我們只需要生成一次,以后都不需要再重新生成。.net Core 和使用sdk 特性.NET Standard 項(xiàng)目不需要 .nuspec 文件,如果是.net Core 和使用sdk 特性.NET Standard 項(xiàng)目則忽略此步驟。轉(zhuǎn)到項(xiàng)目所在目錄,SHIFT +右鍵調(diào)出命令提示符,輸入 nuget spec命令即可生成我們所需要的包元數(shù)據(jù)清單。
將這個(gè)清單文件剪切到第一步新建的 .nuget文件夾,剪切過去后項(xiàng)目下面就不會(huì)憑空多出一個(gè)文件,看著清爽多了。然后做一下調(diào)整填入我們自己項(xiàng)目的相關(guān)信息, 比如像下面這樣:
<?xml version="1.0" encoding="utf-8"?> <package xmlns="http://schemas.microsoft.com/packaging/2013/05/nuspec.xsd"> <metadata> <id>TZM.XFramework</id> <version>$version$</version> <title>$title$</title> <authors>$author$</authors> <owners>$author$</owners> <license type="expression">Apache-2.0</license> <projectUrl>https://github.com/TANZAME/TZM.XFramework</projectUrl> <iconUrl>http://go.microsoft.com/fwlink/?LinkID=386613</iconUrl> <description>TZM.XFramework is a lightweight and high performance object-relational mapper for .NET use the original Entity Framework api.</description> <copyright>Copyright 2019</copyright> <tags>.NET SqlServer MSSQL Database Data O/RM ADO.NET</tags> <repository type="git" url="https://github.com/TANZAME/TZM.XFramework" /> <dependencies /> <frameworkAssemblies> <frameworkAssembly assemblyName="System.Data"/> <frameworkAssembly assemblyName="System.ComponentModel.DataAnnotations"/> <frameworkAssembly assemblyName="System.Net.Http"/> </frameworkAssemblies> </metadata> </package>
編寫腳本
在第一步新建的文件夾里新建一個(gè) bat文件,重命名為 package.bat,接下來編寫我們的自動(dòng)腳本。完整 bat腳本戳這里,直接上代碼片段。
- 這里我設(shè)置 nuget pack 包屬性為Release,并且不自動(dòng)生成,所以需要先在 Release 模式下編譯完成再運(yùn)行腳本。加上 -Build 參數(shù)的話輸出的信息太多看得賊難受,這里把它去掉,我們自己手動(dòng)編譯。
- 填充api_key。去 nuget 官網(wǎng) 登錄自己的帳號(hào)并創(chuàng)建一個(gè) key,復(fù)制粘貼到 api_key 變量。
- 注意 .net framework 項(xiàng)目(fx)和 .net core 項(xiàng)目使用的命令不一樣至此我們所有的準(zhǔn)備步驟都已完成,雙擊 package.bat 運(yùn)行腳本,解放雙手。
@echo off set api_key=xxxxxxlef2j57rw4q26qcrvycvznyvcurgfxbzxxxxxxxx set source_api_uri=https://api.nuget.org/v3/index.json set startup_dir=%~dp0 cd ..\ set startup_dir=%cd% cd .nuget :: 打包 TZM.XFramework -Build echo pack TZM.XFramework copy TZM.XFramework.nuspec %startup_dir%\net45\TZM.XFramework nuget pack %startup_dir%\net45\TZM.XFramework\TZM.XFramework.csproj -Properties Configuration=Release del %startup_dir%\net45\TZM.XFramework\TZM.XFramework.nuspec echo= :: 打包 TZM.XFrameworkCore echo pack TZM.XFrameworkCore dotnet pack --no-build --configuration Release --output %startup_dir%\.nuget\ %startup_dir%\netcore\TZM.XFrameworkCore\TZM.XFrameworkCore.csproj :: 批量推送包 for /R %cd% %%f in (*.nupkg) do ( echo= dotnet nuget push %%f -k %api_key% -s %source_api_uri% ) echo= pause
最后貼一張最終運(yùn)行的效果圖:
總結(jié)
通過這個(gè)腳本,我們可以在一個(gè)文件夾里統(tǒng)一管理我們的包,做到一鍵生成、上傳同時(shí)保持項(xiàng)目文件的清爽,嗯簡直不要太方便 ~..~
參考資料:https://docs.microsoft.com/zh-cn/nuget/
以上所述是小編給大家介紹的使用批處理腳本自動(dòng)生成并上傳NuGet包,希望對(duì)大家有所幫助,如果大家有任何疑問請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
如果你覺得本文對(duì)你有幫助,歡迎轉(zhuǎn)載,煩請(qǐng)注明出處,謝謝!
相關(guān)文章
簡單的Python2.7編程初學(xué)經(jīng)驗(yàn)總結(jié)
這篇文章主要是作者寫給Python2.7編程初學(xué)者的經(jīng)驗(yàn)總結(jié),側(cè)重于包管理、代碼調(diào)試等實(shí)際使用方面,需要的朋友可以參考下2015-04-04python?字符串常用方法超詳細(xì)梳理總結(jié)
字符串是Python中基本的數(shù)據(jù)類型,幾乎在每個(gè)Python程序中都會(huì)使用到它。本文為大家總結(jié)了Python中必備的31個(gè)字符串方法,需要的可以參考一下2022-03-03Python批量實(shí)現(xiàn)word中查找關(guān)鍵字的示例代碼
本文主要介紹了Python批量實(shí)現(xiàn)word中查找關(guān)鍵字的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-07-07

Python編程使用*解包和itertools.product()求笛卡爾積的方法

基于python實(shí)現(xiàn)可視化生成二維碼工具

Python實(shí)現(xiàn)PDF頁面的刪除與添加功能