日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Nuget 多平台多目标快速自动打包

發(fā)布時間:2024/6/30 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Nuget 多平台多目标快速自动打包 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

構(gòu)建現(xiàn)代的 .Net 應(yīng)用離不開 Nuget 的支持,而快速打包 Nuget 成了提高生產(chǎn)率的有效方法。

1. 前置條件

為了實現(xiàn) Nuget 的快速打包,我們需要先解決一些前置依賴,無論是 .Net Framework、Mono 或者 .Net Standard(.Net Core),我們都需要先編譯通過,然后再打包成 Nuget 包,最后再發(fā)布到 Nuget 服務(wù)器上。

相關(guān)目標(biāo) (支持平臺以及依賴):

  • .Net Framework (僅 Windows) : MSBuild.exe、Nuget.exe
  • Mono (跨平臺) : mono、xbuild、Nuget.exe
  • .Net Standard (跨平臺) : dotnet sdk

由于大多數(shù)人還是在 Windows 上開發(fā),所以我下面的教程會以 Windows 為標(biāo)準(zhǔn),并旁敲側(cè)推到其他平臺。

2. 快速打包示例

2.1 Visual Studio 中快速打包

在 Visual Studio 中要實現(xiàn) Nuget 的快速打包主要是借助 Visual Studio 自帶的外部工具。在實戰(zhàn)之前,我們要確保依賴都滿足了。因為已經(jīng)安裝了 Visual Studio ,所以默認(rèn)是已經(jīng)安裝了 MSBuild 和 Nuget 了。

其次,為了讓自動打包的腳本的字符串盡量節(jié)省空間,我們會盡量將對應(yīng)的依賴加到系統(tǒng)環(huán)境變量的 Path 路徑中。一般而言,Msbuild 是在 Visual Studio 安裝目錄下的 Msbuild 目錄中,如下圖所示,在我本機地址是 "C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\15.0\Bin\amd64" ,Nuget 最好是另外放置,例如我就把它放到了 "D:\tools" 目錄中。

如果你足夠細(xì)心,可以發(fā)現(xiàn)安裝完 .Net Core 的 SDK 后,默認(rèn)已經(jīng)加到了系統(tǒng)的環(huán)境變量中了( Mono 也是如此)。

然后我們使用 Visual Studio 打開對應(yīng)的項目,點擊菜單欄中 " 工具 - 外部工具 ",添加我們自定義的自動打包發(fā)布腳本。

如上圖所示,這里使用的是 powershell.exe,如果提示找不到 powershell.exe,同樣是將路徑添加到系統(tǒng)環(huán)境變量的 path 中。至于參數(shù),可以是一個ps腳本文件,也可以是執(zhí)行腳本語句,在這里使用腳本語句。初始目錄選中 "目標(biāo)目錄" 或者 "項目目錄"都可以。

從上圖中,可以看出區(qū)分了目標(biāo)構(gòu)建,這里分布展示 .Net Framework 和 .Net Standard 的構(gòu)建腳本,其中 .Net Framework 類似這樣:

del *.nupkg ; $roj=dir *.csproj ;msbuild $roj; nuget pack $roj ; $nupkg= dir *.nupkg; nuget.exe push $nupkg nugetpassword -Source http://192.168.9.1/nuget

而 .Net Standard 則是:

del *.nupkg ; dotnet build ;dotnet pack --output $pwd;$nupkg= dir *.nupkg; dotnet nuget push $nupkg nugetpassword -Source http://192.168.9.1/nuget

至于運行在非 Windows 上的 Mono 則可能是:

rm *.nupkg ; $roj= *.csproj ;xbuild $roj; $ver= date -d yesterday +%Y%m%d%H%M;nuget pack $roj -Suffix $ver; $nupkg= *.nupkg; mono nuget.exe push $nupkg nugetpassword -Source http://192.168.9.1/nuget

他們共同的特征都是先刪除當(dāng)前路徑的 nupkg 的文件,然后編譯、打包、發(fā)布。(如果你沒有私有的Nuget服務(wù)器,可以參考我另外一篇文章)

在這個基礎(chǔ)上可以做更多的擴(kuò)展,比如發(fā)布測試版本,就在原來的基礎(chǔ)上添加后綴,如:

del *.nupkg ; $roj=dir *.csproj ;msbuild $roj; $ver=\"beta-\"+(Get-Date).ToString(\"yyyyMMddHHmm\");nuget pack $roj -Suffix $ver; $nupkg= dir *.nupkg; nuget.exe push $nupkg nugetpassword -Source http://192.168.9.1/nuget

編寫好自定義的外部工具后,以后每次打包發(fā)包都可以按一下按鈕就運行了。

2.2 VSCode

VSCode 是另外一個受人歡迎的代碼編輯器,目前不支持 Visual Studio 中的外部工具功能 (如果有,請告訴我),也沒有擴(kuò)展支持直接發(fā)布 Nuget 包,但是這并不妨礙我們實現(xiàn)快速自動打包并發(fā)布 Nuget 包。

VSCode 中一個有力的功能就是任務(wù)功能,我們可以通過執(zhí)行任務(wù)來實現(xiàn)同樣的效果。

2.3 文件夾右鍵菜單

2.3.1 Windows 環(huán)境中示例

有時候我們可能需要脫離 ide 來執(zhí)行腳本,這個時候文件夾右鍵菜單就顯得十分高效了(可以多選文件夾發(fā)布)。

具體的操作是修改 windows 的注冊表,具體可以參考windows 下如何修改右鍵菜單 一文。

如果你覺得麻煩,我這里有一個示范的注冊表,修改其中Nuget push的參數(shù)為對應(yīng)的Nuget服務(wù)器信息,另存為 nuget.push.reg,雙擊即可導(dǎo)入到系統(tǒng),然后重啟 windows 資源管理器的進(jìn)程(就是我的電腦的進(jìn)程)。

Windows Registry Editor Version 5.00[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Directory\shell\Nuget] @="Nuget發(fā)布"[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Directory\shell\Nuget\command] @="powershell.exe -noexit -command Set-Location '%V' ;powershell.exe -c \"echo $pwd;del *.nupkg ;dotnet pack --output $pwd;$nupkg= dir *.nupkg; dotnet nuget push $nupkg -k 123456 -s http://192.168.1.1;\""

如果提示找不到程序,需要把 powershell.exe 添加到系統(tǒng)環(huán)境變量的path中。

2.3.2 Mac 環(huán)境中示例

在 Mac 中實現(xiàn)同樣的功能需要借助 Automator 的幫助,首先是添加一個服務(wù),選擇運行shell腳本,保存的時候取一個友好的名字。

3. 結(jié)語

雖然本文著重講了如何實現(xiàn) Nuget 多平臺多目標(biāo)快速自動打包的小目標(biāo),但從幾個示例當(dāng)中就可以看到自動化腳本的威力。

我的博客即將入駐“云棲社區(qū)”,誠邀技術(shù)同仁一同入駐。

轉(zhuǎn)載于:https://www.cnblogs.com/chenug/p/9290281.html

總結(jié)

以上是生活随笔為你收集整理的Nuget 多平台多目标快速自动打包的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。