好,迴歸正題。可是咱們都知道,圖形化最大的問題就是自動化不高。程序員
這是我其中的一個 nuget 包,能夠看見裏面的文件仍是比較多的,那麼我每一次從新編譯,須要發佈新版本的時候,就得把裏面大部分的文件都替換成新的文件。每次都一個一個的替換,煩啊。並且有時候還得擔憂有沒有替換少了。那麼自動化打包確定是值得研究研究一番了。編輯器
在 nuget 官網上面咱們能夠找到一篇關於如何建立 nuget 包的教程:https://docs.nuget.org/Create/Creating-and-Publishing-a-Package。工具
那麼咱們先下載這個命令行工具下來。spa
而後準備咱們須要打包的文件(就是 dll 之類的東西)。命令行
看了下文檔,說是支持讀取直接 csproj 文件打包,那咱們先試一下吧,畢竟程序員的準則就是能簡單就簡單,能懶就懶。code
這裏個人項目結構是這樣的:xml
而後咱們運行 cmd 並輸入命令blog
報了個錯,從新生成一下項目吧,再次運行。教程
好像成了,看看目錄。圖片
可是這 dll 所屬的分類,錯了吧,我建的但是 Win10 應用程序的 dll。。。
既然 csproj 方案不行的話,咱們繼續看文檔。看見有一個經過描述 nuget 包的方案:https://docs.nuget.org/Create/Creating-and-Publishing-a-Package#create-the-manifest
要創建這麼一個描述文件也很簡單,跑個命令
而後咱們用文本編輯器來打開這個新的 Package.nuspec 文件。
能夠看見是一個 xml 文件,而後修改下里面的屬性就能夠了。
再次執行。
有警告,簡單看了下,是說不知道應該打包哪些文件。
那麼繼續找找文檔,最後咱們能夠發現這個。
修改下咱們的 nuspec 文件。
新加上紅色部分,也就是將這個 dll 打包進 nuget 包的 lib\uap10.0\ 這個目錄裏面。
再次執行打包命令。
此次沒警告了。
並且包的結構也沒問題。
那麼只要編寫好 nuspec 裏面的 files 節點的話,之後執行 nuget pack XX.nuspec 這個命令的話,就可以簡單地生成 nuget 包了。
爲了再懶一點,咱們將上面這個命令弄成批處理。
%~dp0nuget.exe pack %~dp0Package.nuspec -OutputDirectory %~dp0
%~dp0 這個是獲取當前正在執行的這個 bat 文件的所在目錄。
那麼最後就變成這樣:
確保這三個文件放在一塊兒,而後執行 package.bat 就能在當前目錄生成 nuget 包了。
接下來咱們就能夠發佈 nuget 包了,用命令也行,但保障一點,我仍是用 GUI 工具來發布(畢竟發佈前再檢查一次仍是有必要的)。
用 Nuget Package Explorer 打開上面生成的那個 nuget 包。
按這裏就能夠了。
到最後一步咱們已經使用批處理來作了,那麼能夠再玩的花樣就多去了,例如用 PowerShell 來自動化包的版本。在項目的 AssemblyInfo.cs 有一個 AssemblyVersion 的 Attribute,而後咱們就能夠用 PowerShell 來先讀取這個版本號,而後修改 nuspec 文件裏的 version 節點,再生成包。其實我如今就已是這麼作了,鑑於我 PowerShell 也沒學過,那段代碼就不放出來丟臉了。你們能夠發散思惟,指望在 nuget 上能看見園友發佈的包包。