我刚刚对我的存储库进行了一些代码更改,并且突然(经过好几周之后). TC构建开始失败,因为它无法下载Microsoft.Bcl.Build.1.0.6的NuGet包.
我最终不得不手动将packages目录的内容复制到TC构建位置,这完全违背了NuGet的要点.
我可以检查什么来找到这个的根本原因?
解决方法
我在
http://sedodream.com/2012/12/24/SlowCheetahBuildServerSupportUpdated.aspx上发表了关于这个问题的博客.总结一下NuGet包恢复(在2.7之前)是作为MSBuild构建过程的一部分实现的.当MSBuild启动构建时,它将评估项目文件和导入其他文件的任何Import声明.这在任何目标执行之前发生.
由于NuGet pkg恢复是构建过程的一部分,因此.targets文件会在某个时间点恢复,导致Import语句产生任何影响为时已晚.
您可以通过按照声明检查.targets文件或在构建过程之前调用pkg restore来解决此问题.我已经创建了一个NuGet包,PackageRestore,它可以帮助后一种方法.
要使用PackageRestore,只需将NuGet包添加到项目中,该项目将自动在项目目录中创建名为packageRestore.proj的文件.配置构建时,需要在.sln / .csproj文件之前构建该项.