Nuget包下载但尚未安装在TFS Build上

时间:2016-03-09 15:40:11

标签: nuget tfsbuild nuget-package-restore

标题几乎说明了一切。我有一个使用一些nuget包的项目。所有都已下载,但从未安装其中两个(HTMLAgilityPack和Newtonsoft),即未提取.nupkg文件,因此无法找到所需的.dll并且构建失败。这是构建日志文件中显示在构建服务器上还原包的时间的一部分:

  

目标" RestorePackages :( TargetId:587)"在文件" ## \ nuget.targets"从   项目" ##。csproj" (目标" ResolveReferences"取决于它):

     

任务"执行"由于错误的条件而跳过;

     

任务"执行" (TaskId:360)任务参数:Command =" ## \ nuget.exe"安装   " ## \ packages.config"   -source" https://nuget.org/api/v2/" -RequireConsent -solutionDir   " ## \源头\" (TaskId:360)任务   参数:LogStandardErrorAsError = True(TaskId:360)" ## \ nuget.exe"安装   " ## \ packages.config"   -source" https://nuget.org/api/v2/" -RequireConsent -solutionDir   " ## \ Sources \" (TaskId:360)

Successfully installed '###.Utilities.Excel 1.0.0.0'. (TaskId:360)   
Successfully installed '###.Utilities.FileIO 1.0.0.1'. (TaskId:360)   
Successfully installed '###.Utilities.String 1.0.0.0'. (TaskId:360)   
All packages listed in packages.config are already installed. 
     

(TaskId:360)完成执行   任务"执行"。 (TaskId:360)完成构建目标" RestorePackages"在   项目" ##。csproj"。:( TargetId:587)

如您所见,HTMLAgilityPack和Newtonsoft未作为 RestorePackages 任务的一部分安装。为什么TFS会构建下载但不安装这些软件包?

2 个答案:

答案 0 :(得分:1)

正如您所写,旧的nuget.exe会执行此操作。

我所做的就是使用" .. nuget \ nuget.exe"超出等式。

我把nuget.exe放在构建服务器上。

我将它们存储起来:

C:\MyProgFiles\NuGet\2.8.6\nuget.exe
C:\MyProgFiles\NuGet\3.3.0\nuget.exe

你可能会问我为什么要保留这些老人。最新版本偶尔会出现问题。

然后在我的构建中,我设置了构建服务器,我基本上运行了这个:

"C:\MyProgFiles\NuGet\3.3.0\nuget.exe" restore c:\builds\1\SomeDirectory\MySolution.sln -NoCache

显然,您将使用宏而不是硬编码路径。

这将(显然)恢复包。

我使用" NoCache"因为偶尔我们的私有nuget缓存已经删除了......它们被缓存在构建服务器上。 nocache arg将很快发现这个问题。

答案 1 :(得分:0)

如果有其他人遇到此问题,那么您用来恢复软件包的nuget.exe可能已过时。在我的情况下,我工作的项目是2年前由其他人启动的,我添加了一个相对较新的nuget包,旧的nuget.exe与它不兼容。您可以下载最新版本的nuget.exe here