我知道 NuGet 恢复可能会在包文件夹和包含的文件上放置签出锁。但是,为什么在 Gated Checkin Build 由于编译错误而失败时,TFS Build 不释放这些锁呢?
当 Gated Checkin Build 失败时,Visual Studio 不允许取消搁置更改,因为文件被构建服务器上的 TFS 服务锁定。
TFS Sidekick 显示多个文件被 TFS 服务帐户锁定。
我知道 NuGet 恢复可能会在包文件夹和包含的文件上放置签出锁。但是,为什么在 Gated Checkin Build 由于编译错误而失败时,TFS Build 不释放这些锁呢?
当 Gated Checkin Build 失败时,Visual Studio 不允许取消搁置更改,因为文件被构建服务器上的 TFS 服务锁定。
TFS Sidekick 显示多个文件被 TFS 服务帐户锁定。
选项 1:您需要将 .tfignore 添加到带有“*/”作为过滤器的包文件夹中。除了配置文件之外,您实际上不想检查此文件夹下的任何内容。
http://msdn.microsoft.com/en-us/library/ms245454.aspx
选项 2:(更好)将 nuget.config 文件添加到您的解决方案中,惯例是将其放在名为 .nuget 的文件夹下 - 但它也可以保留在根目录下。内容应该是:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<solution>
<add key="disableSourceControlIntegration" value="true" />
</solution>
</configuration>
这将排除包文件夹,你不需要任何东西。注意:如果您使用的是 NuGet 2.7 或更高版本,默认情况下会启用自动还原。不要在您的解决方案中使用“启用 NuGet 还原”,它会添加执行此操作的旧方法。请参阅http://geekswithblogs.net/terje/archive/2014/06/11/converting-projects-to-use-automatic-nuget-restore.aspx
如果您的解决方案设置为恢复 NuGet 包,则无需将包签入 TFS,因为它们将在构建时恢复,将解决方案设置为恢复包将阻止 TFS 尝试将包添加到包文件夹。
正如 MrHinsh 所说,您在 TFS 中的 packages 文件夹应该只包含 Config 文件