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