最近遇到一个情况,IDE 是 VS2015 Update3 ,新建一个library项目(暂时叫做 mytests),然后用 nuget 安装了一个 Shouldly 包

在 VS 上一切正常,可以跑起来。

当放到 Jenkins 上,死活不还原。查看Jenkins的输出日志,没有找到任何 mytests 自动还原的信息

最后找了一个其它能自动还原的项目一比较。发现在.csproj文件中缺少

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

最后手动修改了 mytests.csproj 文件,在

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

下面加上

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

然后在jenkins上,此项目的 nuget 就自动还原了。

一定要注意 Import  的 Project 属性,是当前项目文件(.csproj)相对于nuget.targets的路径。

我的单元测试项目是在 test 目录下,源码在 src 下 ,src 和 test 是兄弟目录,.nuget目录(文件 nuget.exe / nuget.target / nuget.config)也在src目录下

所以,我在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>

 

最新文章

  1. sqlserver批量修改首字母为大写
  2. js 中关联数组
  3. 大熊君{{bb}}移动开发之旅(第一季)
  4. Cocos开发中性能优化工具介绍之使用Windows任务管理器
  5. 【动态规划】【归并】Vijos P1412 多人背包
  6. centos yum
  7. Sql自动生成字母加数字的随机数
  8. sql中Statement与PreparedStatement的区别
  9. tomcat的环境搭建
  10. ES6中的迭代器(Iterator)和生成器(Generator)
  11. 【转载】兼容所有浏览器的JQuery zClip插件实现复制到剪贴板功能
  12. Eclipse导入已有的项目后项目报错的解决办法
  13. 最新安全狗 apache v4.0 sql注入 bypass
  14. PAT A1137 Final Grading (25 分)——排序
  15. f5申请并激活License
  16. 深入理解Java虚拟机--阅读笔记二
  17. 新手向:从不同的角度来详细分析Redis
  18. date的讲解及分析
  19. 转 js事件探秘
  20. BZOJ 3295 动态逆序对 | CDQ分治

热门文章

  1. 【转】Linux如何查看JDK的安装路径
  2. 解决iOS项目根目录下文件乱七八糟的问题
  3. Java JVM技术
  4. Linux下的压缩解压缩命令
  5. PHP实现数组递归转义的方法
  6. php导出word格式数据的代码(转)
  7. AltiumDesigner16笔记
  8. 霍金:AI或许能根除疾病和贫穷,但也可能摧毁人类 | GMIC 2017
  9. 解决 LLVM 错误 cannot specify -o when generating multiple output files
  10. QEP之init()和dispatch()流程图