TFS 2010 - VersionControl.config недействителен и не может быть загружен

Недавно у нас возникла странная проблема с 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, Boolean dataDirectoryExists, InternalWorkspaceConflictInfo [] & conflictingWorkspaces) --- Конец внутренняя трассировка стека исключений Microsoft.TeamFoundation.VersionControl.Client.InternalCacheLoader.LoadConfig(InternalCache currentCache, Boolean dataDirectoryExists, InternalWorkspaceConflictInfo [] & conflictingWorkspaces)

Удаление содержимого папки Cache, упомянутое в сообщении об ошибке, не помогло.

В то время было два случая:

  • у сервера закончилось свободное пространство на диске C:

  • наши пользователи поддержки устанавливали обновления Windows, включая Service Pack 1 для TFS.

Некоторые из наших проектов были 32 бит, например Silverlight, который должен быть 32 бит, а еще 64. Однако наш сервер TFS имеет 64 бит. Чтобы правильно скомпилировать проекты, определения сборки должны указывать либо "Авто" (который выполняет компиляцию на 64 бита в качестве сервера TFS), либо "X86", который обеспечивает 32-битную компиляцию.

Те, которые являются X86, неожиданно начали с ошибкой, упомянутой выше.

РЕШЕНИЕ:

По-видимому, есть и другое расположение папки Cache: C:\Windows\SysWOW64\config\systemprofile\AppData\Local\Microsoft\Team Foundation\3.0\Cache

Мы удалили содержимое этой папки, и все началось правильно.

BTW: он не имеет ничего общего с переключателем /m. Мы тоже пробовали, но это не помогло.

Ответы

Ответ 1

У меня была такая же проблема после предупреждения о низком диске.

Удаление/переименование файла C:\Users\user.name\AppData\Local\Microsoft\Team Foundation\4.0\Cache\VersionControl.config решило проблему в моем случае.

Ответ 2

Очистить все папки кэша:

  • %WINDIR%\System32\Config\Systemprofile\AppData\Local\Microsoft\Team Foundation\3.0\Cache
  • %WINDIR%\SysWOW64\Config\Systemprofile\AppData\Local\Microsoft\Team Foundation\3.0\Cache

Ответ 3

Team Explorer появился как подключенный к TFS. Но "Source Control Explorer" был помечен как отключенный.

удаление "C:\Users\user.name\AppData\Local\Microsoft\Team Foundation\4.0\Cache\VersionControl.config" также решило проблему. (Спасибо)

Ответ 4

После того, как @mhu подразумевает, что каталоги TFS Cache должны быть очищены, я выполнил полный поиск папок "Team Foundation" с подпапкой Cache на моем сервере сборки.

Затем я создал пакетный файл, который их удаляет. Мои сборки работали после этого script.

Имя файла: 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

Здесь должны быть заменены две переменные: -

  • AAA_USERNAME предназначен для текущего имени пользователя пользователя (на основе ручного входа на сервер).
  • BBB_SERVICEACCOUNT предназначен для учетной записи, используемой для запуска службы сборки TFS, доступной через консоль администрирования Team Foundation Server:

    Как узнать, где кеш TFS

    В моем случае это был "NetworkService".