NuGet省略了一些软件包,但是通过VS2017逐个项目地手动恢复它们是成功的

时间:2017-08-02 07:38:30

标签: nuget azure-pipelines

我在VSTS中为我们的项目创建了一个构建定义。 在NuGet安装程序步骤中,我指定:

2017-07-31T11:39:10.2496191Z ##[section]Starting: NuGet restore DirectoryName/AppServer/AppServer.sln
2017-07-31T11:39:10.2808709Z ==============================================================================
2017-07-31T11:39:10.2808709Z Task         : NuGet Installer
2017-07-31T11:39:10.2808709Z Description  : Installs or restores missing NuGet packages
2017-07-31T11:39:10.2808709Z Version      : 0.2.31
2017-07-31T11:39:10.2808709Z Author       : Microsoft Corporation
2017-07-31T11:39:10.2808709Z Help         : [More Information](https://go.microsoft.com/fwlink/?LinkID=613747)

当我运行构建执行时,我在控制台上获取信息:

x <- mtcars
colnames(x)[1] <- '1mpg'
x$`1mpg`

它恢复了很多软件包,但有些软件包没有恢复。不抛出任何错误,没有警告,它们只是被省略,导致Build解决方案任务失败。

但是,当我登录到虚拟机(Azure)并在Visual Studio 2017中打开解决方案并逐个单击其中的每个项目并右键单击它,然后还原NuGet包时,一切都已成功下载。然后,在Get sources步骤中将Clean设置为false的条件下,构建定义执行是成功的。

2 个答案:

答案 0 :(得分:1)

尝试使用 NuGet 4.0.0 版本(在NuGet Installer任务的高级部分指定)。

另一方面,有1.*2.*版本的NuGet任务可用,您可以使用最新版本的任务。

enter image description here

答案 1 :(得分:0)

引起了我的注意:

  

并逐一点击其中的每个项目

这可能与您的VSTS自动化功能不同,是吗?

一个可能的原因是你的某个项目是从它的packages文件夹引用nuget资源,但是packages.config 中缺少引用。如果某个其他项目正确引用了包,那么它恰好可用,但只有当某人首先编译该项目时才会这样。如果没有构建该项目,那么错误配置的项目也会失败。

所以我建议你:

  1. 检查构建错误以确定导致问题的程序包
  2. 确认在失败的项目中的packages.config中确实正确设置了给定的包,并且从正确的文件夹加载了资源(版本匹配)。
  3. 此外,您应该验证日志并构建错误,而不是手动编译每个项目,而是复制构建服务器正在执行的确切步骤。通常是清理和构建整个解决方案。