nuget在jenkins上不能自动还原项目依赖包---笔记

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

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

 

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

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

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

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

1
<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下面了)

1
<SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\..\src\</SolutionDir>

 

posted on   oceanho  阅读(1378)  评论(0编辑  收藏  举报

编辑推荐:
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· 展开说说关于C#中ORM框架的用法!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

导航

统计

点击右上角即可分享
微信分享提示