我刚刚对我的存储库进行了一些代码更改,然后一下子就没事了(经过数周的检查)。 TC版本由于无法下载Microsoft.Bcl.Build.1.0.6的NuGet软件包而开始失败。
我最终不得不手动将packages目录的内容复制到TC构建位置,这完全使NuGet失去作用。
我要检查什么才能找到根本原因?
解决方案中启用了有关NuGet的所有功能以获取软件包。
最佳答案
我已经在http://sedodream.com/2012/12/24/SlowCheetahBuildServerSupportUpdated.aspx上发布了有关此问题的博客。总之,NuGet软件包还原(2.7之前)是作为MSBuild构建过程的一部分实现的。 MSBuild启动构建时,它将评估项目文件以及导入其他文件的所有Import声明。这发生在任何目标执行之前。
由于NuGet pkg restore是构建过程的一部分,因此会立即恢复.targets文件,以至于对于Import语句产生任何影响为时已晚。
您可以按照说明通过检入.targets文件或在构建过程之前调用pkg restore来解决此问题。我创建了一个NuGet包PackageRestore,它可以为后一种方法提供帮助。
要使用PackageRestore,只需将NuGet软件包添加到您的项目中,这将在您的项目目录中自动创建一个名为packageRestore.proj的文件。配置构建时,需要在.sln / .csproj文件之前构建该项目。