最近遇到一個狀況,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>