使用命令行打包 nuget 包

對於那些不打算涉及這麼複雜而又想製做本身的 nuget 包的園友們,我是推薦使用 Nuget Package Explorer 來製做的。關於這個圖形化的 nuget 包管理軟件的使用,博客園內有相關的文章,你們能夠搜索看看。

 

好,迴歸正題。可是咱們都知道,圖形化最大的問題就是自動化不高程序員

QQ截圖20151021183619

這是我其中的一個 nuget 包,能夠看見裏面的文件仍是比較多的,那麼我每一次從新編譯,須要發佈新版本的時候,就得把裏面大部分的文件都替換成新的文件。每次都一個一個的替換,煩啊。並且有時候還得擔憂有沒有替換少了。那麼自動化打包確定是值得研究研究一番了。編輯器

 

在 nuget 官網上面咱們能夠找到一篇關於如何建立 nuget 包的教程:https://docs.nuget.org/Create/Creating-and-Publishing-a-Package工具

QQ截圖20151021184741

那麼咱們先下載這個命令行工具下來。spa

 

而後準備咱們須要打包的文件(就是 dll 之類的東西)。命令行

看了下文檔,說是支持讀取直接 csproj 文件打包,那咱們先試一下吧,畢竟程序員的準則就是能簡單就簡單,能懶就懶。code

這裏個人項目結構是這樣的:xml

QQ截圖20151021185512

而後咱們運行 cmd 並輸入命令blog

QQ截圖20151021185839

報了個錯,從新生成一下項目吧,再次運行。教程

QQ截圖20151021185937

好像成了,看看目錄。圖片

QQ截圖20151021192431

QQ截圖20151021192516

可是這 dll 所屬的分類,錯了吧,我建的但是 Win10 應用程序的 dll。。。

 

既然 csproj 方案不行的話,咱們繼續看文檔。看見有一個經過描述 nuget 包的方案:https://docs.nuget.org/Create/Creating-and-Publishing-a-Package#create-the-manifest

要創建這麼一個描述文件也很簡單,跑個命令

QQ截圖20151021192847

QQ截圖20151021192857

而後咱們用文本編輯器來打開這個新的 Package.nuspec 文件。

QQ截圖20151021193036

能夠看見是一個 xml 文件,而後修改下里面的屬性就能夠了。

再次執行。

QQ截圖20151021193538

有警告,簡單看了下,是說不知道應該打包哪些文件。

 

那麼繼續找找文檔,最後咱們能夠發現這個。

QQ截圖20151021193744

修改下咱們的 nuspec 文件。

QQ截圖20151021194102

新加上紅色部分,也就是將這個 dll 打包進 nuget 包的 lib\uap10.0\ 這個目錄裏面。

再次執行打包命令。

QQ截圖20151021194224

此次沒警告了。

並且包的結構也沒問題。

QQ截圖20151021194328

那麼只要編寫好 nuspec 裏面的 files 節點的話,之後執行 nuget pack XX.nuspec 這個命令的話,就可以簡單地生成 nuget 包了。

 

爲了再懶一點,咱們將上面這個命令弄成批處理。

%~dp0nuget.exe pack %~dp0Package.nuspec -OutputDirectory %~dp0

%~dp0 這個是獲取當前正在執行的這個 bat 文件的所在目錄。

那麼最後就變成這樣:

QQ截圖20151021200418

確保這三個文件放在一塊兒,而後執行 package.bat 就能在當前目錄生成 nuget 包了。

 

接下來咱們就能夠發佈 nuget 包了,用命令也行,但保障一點,我仍是用 GUI 工具來發布(畢竟發佈前再檢查一次仍是有必要的)。

用 Nuget Package Explorer 打開上面生成的那個 nuget 包。

QQ截圖20151021201000

按這裏就能夠了。

注意:一旦發佈,nuget 上的包是不可以刪除的!!只能隱藏,所以,請確保無誤再發布。

 

這裏是分割線QQ圖片20150925222632

到最後一步咱們已經使用批處理來作了,那麼能夠再玩的花樣就多去了,例如用 PowerShell 來自動化包的版本。在項目的 AssemblyInfo.cs 有一個 AssemblyVersion 的 Attribute,而後咱們就能夠用 PowerShell 來先讀取這個版本號,而後修改 nuspec 文件裏的 version 節點,再生成包。其實我如今就已是這麼作了QQ圖片20151021201734,鑑於我 PowerShell 也沒學過,那段代碼就不放出來丟臉了QQ圖片20151021201800。你們能夠發散思惟,指望在 nuget 上能看見園友發佈的包包bba_thumb

相關文章
相關標籤/搜索