我們剛剛通過msbuild在Jenkins環境下把一個控制台項目生成exe可執行文件,如果我們引用了nuget包,也能夠正常生成,但是我們知道,我們在把項目提交到git或者svn上的時候並不包含這些包,我們把項目從git上拉到下來后用vs打開,vs會首先來還原這些nuget包,同樣,如果我們是使用msbuild.exe來構建這些項目,也需要首先還原nuget包,否則項目由於缺少依賴而無法正常編譯,下面我們就介紹如何使用nuget.exe來還原項目依賴.
產生我們在項目中添加對Newtonsoft的引用,然后控制台改成以下語句
然后我們做一次提交,把它提交到github上,提交以后刪除本地項目,然后再從github上拉取.這樣下載下來的默認是沒有Newtonsoft包的(因為我們提交的時候默認忽略)
此時我們再將執行上一篇中的構建命令,將會出現構建錯誤,console output輸出如下
可以看到都是關於Newtonsoft的錯誤,正如我們所料,由於缺少依賴無法正確編譯項目.
下面我們新建一個項目一個項目,用nuget.exe來執行還原,然后再使用msbuild.exe來執行編譯.
我們創建一個freestyle 項目,命名為BuildWithNuget
在Add Build Step里添加一個Execute windowsbatch command
首先我們先要找到nuget.exe所在位置(可以通過windows搜索或者everything搜索),然后 添加restore命令 restore后面跟的是要返原的項目的sln文件或者csproj文件.
配置完成后我們點擊保存,然后執行Build Now
如果配置沒問題,將會生成一條執行成功記錄,點擊記錄查看console output,內容如下
可以看到Newtonsoft.json.11.0.2已經添加到指定目錄.我們修改項目,再點擊Add Build step在還原nuget包下面再添加一個構建步驟,仍然選擇Execute windows batch command
點擊保存,執行build now
如果配置正確,則會生成一條成功記錄,查看這條構建記錄的console output,內容如下
我們進入bin目錄下的myrelease目錄(項目指定生成在myrelease目錄下),此時可以看到項目已正確生成.我們點擊consoletest.exe,可以看到對象已被序列華輸出