【发布时间】:2014-03-13 16:23:16
【问题描述】:
我正在 TeamCity 中构建一个启用 NuGet 包还原的项目。
我有两个构建步骤:
- NuGet 安装程序
- MSBuild
其中一个项目安装了来自官方提要的 log4net-package。 (但不要挂在哪个包裹上)
我的问题是当 TeamCity 运行第一步时,它在 nuget-installer 步骤中失败并显示以下消息: 找不到包“log4net”的“2.0.3”版本。
所以在尽力找出解决方案中的任何错误后,我尝试:
- 禁用 NuGet 安装程序步骤
- 运行我的构建 -
显然失败了,因为它没有包(见下文) - 启用 NuGet 安装程序步骤
- 重新运行构建
[编辑] 关于 3. 步骤,正如 John H. 指出的那样,MSBuild 理想情况下应该能够重建包,所以我不需要 NuGet 安装程序步骤。当我尝试在没有 nuget 安装程序步骤的情况下构建解决方案时出现的错误与我安装的 OctoPack-package 有关:
OctoPack 无法运行,因为 NuGet 包在构建运行之前已恢复,并且目标文件在构建开始时不可用。请重新构建项目以在构建中包含这些包。您可能还需要确保您的构建服务器不会在每次构建之前删除包
那么它就成功了..为什么?
有人对我的问题有一些见解吗?
更多背景知识:
我认为这与章鱼部署包有关。我在 teamcity 服务器上安装了 octopus deploy 插件,并且在 MSBuild 步骤中勾选了 Run OctoPack 复选框。
我已尝试卸载 octopack 包并重新安装,但没有成功。
会不会是 MSBuild 步骤上的 NuGet 包还原与章鱼插件相结合导致了我的问题?
[部分解决] 我仍然不确定为什么我在 log4net-package 上收到错误。我运行 NuGet 安装程序作为自动构建的第一步,由于构建的性质,最终证明这是正确的做法。
我承认我不(总是)在更新包时阅读“新功能”。将 Octopack 从 2.0.26 升级到 3.0.19 时,其中一项更改是您不再需要签入 .octopack 文件夹。所以我真的能理解为什么构建在签入时找不到目标文件。
现在我已经:
- 升级到 Octopack 3
- 从版本控制中删除了 .octopack 文件夹
- (再次)在 teamcity 中启用了 nuget 安装步骤
并且构建运行良好。
感谢大家的帮助!我现在是一个受过更好教育的人:)
[删除]无关信息
【问题讨论】:
-
“NuGet 安装程序”步骤的重点是明确恢复 MSBuild 步骤的包吗?如果配置正确,MSBuild 步骤应该能够在没有任何帮助的情况下恢复包。 MSBuild 步骤是否记录任何 NuGet 错误?
-
嗨,约翰,感谢您指出这一点。当我禁用包还原步骤并运行失败的构建时,错误实际上与另一个包 OctoPack 有关。 “OctoPack 无法运行,因为 NuGet 包在构建运行之前已恢复,并且在构建开始时目标文件不可用。请重新构建项目以将这些包包含在构建中。您可能还需要确保您的构建服务器不会在每次构建之前删除包”。我会调查的..
-
我在这里使用 ContinuiCI 得到相同的结果,它为每个构建创建源文件夹的新副本。如果我没看错,这意味着每次构建都会恢复包?
-
我从 Octopack 3.0.19 恢复到 2.0.26,问题就消失了。我已经在这里向八达通报告了:help.octopusdeploy.com/discussions/problems/…
-
嗨,肖恩,我也安装了 2.0.26,现在可以构建了。没有约翰指出的 NuGet 安装程序步骤。
标签: teamcity nuget octopus-deploy