22

最近,我们在使用 TFS 2010 时遇到了一个奇怪的问题。我们花了几天时间才弄明白。只是想分享我对可能对其他人有帮助的问题的知识。

它以前可以正常工作大约 2 年。但突然之间,构建开始失败并出现以下错误:

一次在此解决方案中构建项目。要启用并行构建,请添加“/m”开关。MSBUILD:错误 MSB4017:由于意外的记录器故障,构建意外停止。Microsoft.Build.Exceptions.InternalLoggerException:由于意外的记录器故障,构建意外停止。---> Microsoft.TeamFoundation.VersionControl.Client.VersionControlException:缓存文件 C:\Windows\system32\config\systemprofile\AppData\Local\Microsoft\Team Foundation\3.0\Cache\VersionControl.config 无效,不能加载。请更正或删除文件。---> System.NullReferenceException:对象引用未设置为对象的实例。在 Microsoft.TeamFoundation.VersionControl.Client.InternalCacheLoader.LoadConfig(InternalCache currentCache,

删除错误消息中提到的 Cache 文件夹的内容没有帮助。

当时有两件事巧合:

  • 服务器在驱动器 C 中的可用空间不足:

  • 我们的支持人员正在安装 Windows 更新,包括 TFS 的 Service Pack 1。

我们的一些项目是 32 位的,例如 Silverlight,它必须是 32 位的,而不是 64 位的。但是,我们的 TFS 服务器是 64 位的。为了正确编译项目,构建定义应指定“Auto”(与 TFS 服务器一样运行 64 位编译)或强制 32 位编译的“X86”。

那些是 X86 的那些突然开始失败并出现上述错误。

解决方案:

显然,Cache 文件夹还有另一个位置:C:\Windows\SysWOW64\config\systemprofile\AppData\Local\Microsoft\Team Foundation\3.0\Cache

我们删除了该文件夹的内容,一切都开始正常工作。

顺便说一句:它与 /m 开关无关。我们也尝试过,但没有帮助。

4

4 回答 4

15

在磁盘空间不足警告后,我遇到了同样的问题。

删除/重命名文件 C:\Users\user.name\AppData\Local\Microsoft\Team Foundation\4.0\Cache\VersionControl.config 解决了我的问题。

于 2015-01-05T10:22:58.417 回答
5

清除所有缓存文件夹:

  • %WINDIR%\System32\Config\Systemprofile\AppData\Local\Microsoft\Team Foundation\3.0\Cache
  • %WINDIR%\SysWOW64\Config\Systemprofile\AppData\Local\Microsoft\Team Foundation\3.0\Cache
于 2014-01-30T14:47:30.803 回答
3

Team Explorer 显示为已连接到 TFS。但是“源代码管理资源管理器”被标记为断开连接。

删除“C:\Users\user.name\AppData\Local\Microsoft\Team Foundation\4.0\Cache\VersionControl.config”也解决了这个问题。(谢谢)

于 2015-12-08T12:48:26.257 回答
1

在@mhu 暗示Cache应该清除 TFS 目录之后,我完全搜索了在我的构建服务器上有一个 Cache 子文件夹的“Team Foundation”文件夹。

然后我创建了一个删除它们的批处理文件。运行此脚本后,我的构建工作。

文件名:ClearTFSCache.bat 文件内容:

@echo+

@echo Removing TFS Cache Folder #1
@RD /S /Q "C:\Users\AAA_USERNAME\AppData\Local\Microsoft\Team Foundation\4.0\Cache"

@echo Removing TFS Cache Folder #2
@RD /S /Q "C:\Windows\ServiceProfiles\BBB_SERVICEACCOUNT\AppData\Local\Microsoft\Team Foundation\4.0\Cache"

@pause

这里应该替换两个变量:-

  1. AAA_USERNAME用于当前用户的用户名(基于手动登录服务器)。
  2. BBB_SERVICEACCOUNT用于运行 TFS 构建服务的帐户,可通过 Team Foundation Server 管理控制台访问:

    如何找出 TFS 缓存在哪里

    就我而言,它是“网络服务”。

于 2016-09-23T23:51:37.140 回答