TeamCity NuGet安装程序步骤问题

时间:2014-02-14 10:42:39

标签: teamcity nuget octopus-deploy

我正在TeamCity中构建一个启用了NuGet包恢复的项目。

我有两个构建步骤:

  • NuGet安装程序
  • 的MSBuild

其中一个项目安装了官方Feed中的log4net-package。 (但不要挂在哪个包裹上)   

我的问题是当TeamCity运行第一步时,它在nuget-installer步骤中失败并显示以下消息: 无法找到'log4net'包的版本'2.0.3'。

因此,在尽力找到解决方案中的任何错误之后,我尝试:

  1. 禁用NuGet安装程序步骤
  2. 运行我的构建 - 明显失败,因为它没有包(见下文)
  3. 启用NuGet安装程序步骤
  4. 重新运行构建
  5. [编辑]关于3.步骤,理想情况下,MSBuild应该像John H.指出的那样,能够重建包,所以我不需要NuGet安装程序步骤。我尝试在没有nuget安装程序步骤的情况下构建解决方案时出现的错误与我安装的OctoPack软件包有关:

    无法运行OctoPack,因为NuGet包在构建运行之前已恢复,并且目标文件在构建开始时不可用。请再次构建项目以在构建中包含这些包。您可能还需要确保构建服务器在每次构建之前不删除包

    然后它成功了..为什么?

    有没有人对我的问题有所了解?

    更多背景资料:

    我认为这与章鱼部署包有关。我在teamcity服务器上安装了章鱼部署插件,我在MSBuild步骤中勾选了Run OctoPack复选框。

    我尝试卸载octopack软件包并重新安装,但没有成功。

    可能是因为MSBuild步骤中的NuGet包恢复与章鱼插件结合导致了我的问题吗?

    [部分解决方案]我仍然不确定为什么我在log4net-package上收到错误。我正在运行NuGet安装程序作为我的自动构建的第一步,由于构建的性质,最终证明这是正确的事情。

    我承认我不会(总是)在更新软件包时阅读“什么是新的”。将Octopack从2.0.26升级到3.0.19时,其中一项更改是您不再需要签入.octopack文件夹。所以我真的能理解为什么构建在签入时无法找到目标文件。

    现在我:

    • 升级到Octopack 3
    • 从版本控制中删除了.octopack文件夹
    • (再次)启用了teamcity中的nuget安装步骤

    并且构建运行正常。

    感谢您的帮助!我现在是一个受过良好教育的人:)

    [删除]无关信息

1 个答案:

答案 0 :(得分:3)

解决方案是在MSBuild运行的还原步骤之前运行Nuget还原。

如果必须恢复包,MSBuild步骤将停止。在MSBuild运行之前执行还原意味着它不必执行还原。该解决方案在this .NET Framework Blog article中进行了讨论。

Octopus Deploy团队的回复是here

同样的问题可能导致TFS失败 - 请参阅RinoTom的回答here。我使用Continua CI并添加了命令行步骤以在MSBuild步骤之前运行Nuget还原。