我使用FAKE来构建我的项目并生成NuGet包。 我们说我有一个项目" MyProjectA"。然后,TeamCity使用FAKE脚本创建一个包含MyProjectA的NuGet包:
MyProjectA-1.0.1.nupkg
然后我想在另一个项目中使用这个包:" MyProjectB"。所以在FAKE中我添加了依赖:
NuGet (fun p ->
{ p with
Authors = authors
Project = "MyProjectB"
// ...
Dependencies = ["MyProjectA", GetPackageVersion "./packages/" "MyProjectA" |> RequireExactly ]
Files = // ..
}
重要:TeamCity也为MyProjectB生成一个NuGet(让我们说我需要另一个项目)。
在某些时候,我意识到我需要对MyProjectA应用修复程序。所以我这样做,TeamCity / FAKE生成了一个更新版本的NuGet包:
MyProjectA-1.0.2.nupkg
然后我也更新了MyProjectB(即确保它引用了新版本的MyProjectA)。
但是:TeamCity会生成一个MyProjectB NuGet包,引用旧版本的MyProjectA !!
我查看了TeamCity构建文件夹并注意到那里有一个"包"包含以下内容的文件夹:
+-+ packages
| MyProjectA-1.0.1.nupkg
| MyProjectA-1.0.2.nupkg
看起来TC并没有清理其工作文件夹,这很好,因为它减少了构建项目所需的时间。在这种情况下,它也会导致FAKE GetPackageVersion函数失败(我猜它会使第一个包与名称匹配 - 在这种情况下,旧包始终是按字母顺序排列的第一个包,因为它具有较低的版本号)。 / p>
目前我找到的唯一修复方法是从TC文件夹中手动删除旧包。有更好的解决方案吗?
答案 0 :(得分:1)
您可以在构建TeamCity之前删除构建目录。在您的VCS Root中,假设您使用git,则会将名为Clean Files Policy
的设置设置为All untracked files
。它会在每次构建之前删除所有包。再假设您没有在源代码管理中使用它们。