nuget在jenkins上不能自動還原項目依賴包---筆記

最近遇到一個狀況,IDE 是 VS2015 Update3 ,新建一個library項目(暫時叫作 mytests),而後用 nuget 安裝了一個 Shouldly 包單元測試

在 VS 上一切正常,能夠跑起來。測試

 

當放到 Jenkins 上,死活不還原。查看Jenkins的輸出日誌,沒有找到任何 mytests 自動還原的信息ui

最後找了一個其它能自動還原的項目一比較。發如今.csproj文件中缺乏日誌

<Import Project="$(SolutionDir)\.nuget\NuGet.targets" Condition="Exists('$(SolutionDir)\.nuget\NuGet.targets')" />

最後手動修改了 mytests.csproj 文件,在 blog

<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />

下面加上get

  <Import Project="$(SolutionDir)\.nuget\NuGet.targets" Condition="Exists('$(SolutionDir)\.nuget\NuGet.targets')" />源碼

而後在jenkins上,此項目的 nuget 就自動還原了。jenkins

 

必定要注意 Import  的 Project 屬性,是當前項目文件(.csproj)相對於nuget.targets的路徑。it

個人單元測試項目是在 test 目錄下,源碼在 src 下 ,src 和 test 是兄弟目錄,.nuget目錄(文件 nuget.exe / nuget.target / nuget.config)也在src目錄下io

因此,我在mytest.csproj文件開頭的PropertyGroup屬性中,添加了下面這段Property。這個 SolutionDir 在 上面 

  <Import Project="$(SolutionDir)\.nuget\NuGet.targets" Condition="Exists('$(SolutionDir)\.nuget\NuGet.targets')" /> 中用到。

個人SolutionDir值指向的地址是..\..\src\,這樣就把目錄指向src了,路徑就對了。(當前目錄是.csproj文件所在目錄。上級是 test ,再上級是 test和src的父目錄,因此 ..\..\src 就到src下面了)

<SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\..\src\</SolutionDir>
相關文章
相關標籤/搜索