标题几乎说明了一切。我有一个使用一些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会构建下载但不安装这些软件包?
答案 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