我正在TeamCity中构建一个启用了NuGet包恢复的项目。
我有两个构建步骤:
其中一个项目安装了官方Feed中的log4net-package。 (但不要挂在哪个包裹上)
我的问题是当TeamCity运行第一步时,它在nuget-installer步骤中失败并显示以下消息: 无法找到'log4net'包的版本'2.0.3'。
因此,在尽力找到解决方案中的任何错误之后,我尝试:
[编辑]关于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文件夹。所以我真的能理解为什么构建在签入时无法找到目标文件。
现在我:
并且构建运行正常。
感谢您的帮助!我现在是一个受过良好教育的人:)
[删除]无关信息
答案 0 :(得分:3)
解决方案是在MSBuild运行的还原步骤之前运行Nuget还原。
如果必须恢复包,MSBuild步骤将停止。在MSBuild运行之前执行还原意味着它不必执行还原。该解决方案在this .NET Framework Blog article中进行了讨论。
Octopus Deploy团队的回复是here。
同样的问题可能导致TFS失败 - 请参阅RinoTom的回答here。我使用Continua CI并添加了命令行步骤以在MSBuild步骤之前运行Nuget还原。