我正在 TeamCity 中构建一个启用 NuGet 包还原的项目。
我有两个构建步骤:
- NuGet 安装程序
- 微软构建
其中一个项目安装了来自官方提要的 log4net-package。(但不要挂在哪个包裹上)
我的问题是当 TeamCity 运行第一步时,它在 nuget-installer 步骤中失败并显示以下消息:无法找到包 'log4net' 的版本 '2.0.3'。
因此,在尽我所能找到解决方案中的任何错误之后,我尝试:
- 禁用 NuGet 安装程序步骤
- 运行我的构建——
这显然失败了,因为它没有包(见下文) - 启用 NuGet 安装程序步骤
- 重新运行构建
[编辑] 关于 3. 步骤,正如 John H. 指出的那样,MSBuild 理想情况下应该能够重建包,所以我不需要 NuGet Installer 步骤。当我尝试在没有 nuget 安装程序步骤的情况下构建解决方案时出现的错误与我安装的 OctoPack-package 有关:
OctoPack 无法运行,因为 NuGet 包在构建运行之前已还原,并且目标文件在构建开始时不可用。请重新构建项目以在构建中包含这些包。您可能还需要确保您的构建服务器不会在每次构建之前删除包
然后它成功了..为什么?
有人对我的问题有一些见解吗?
更多背景:
我认为这与章鱼部署包有关。我在 teamcity 服务器上安装了章鱼部署插件,并且在 MSBuild 步骤中勾选了运行 OctoPack 复选框。
我试图卸载 octopack 包并重新安装,但没有成功。
是不是 MSBuild 步骤上的 NuGet 包还原与章鱼插件相结合会导致我的问题?
[部分解决] 我仍然不确定为什么我在 log4net-package 上收到错误。我运行 NuGet 安装程序作为自动构建的第一步,由于构建的性质,最终证明这是正确的做法。
我承认我不(总是)在更新包时阅读“新功能”。将 Octopack 从 2.0.26 升级到 3.0.19 时,其中一项更改是您不再需要签入 .octopack 文件夹。所以我真的能理解为什么构建在签入时找不到目标文件。
现在我已经:
- 升级到 Octopack 3
- 从版本控制中删除 .octopack 文件夹
- (再次)在 teamcity 中启用了 nuget 安装步骤
并且构建运行良好。
感谢大家的帮助!我现在是一个受过更好教育的人:)
[已删除] 无关信息