2013-04-16 9 views
19

Niedawno doświadczyliśmy dziwnego problemu z oprogramowaniem TFS 2010. Spędziliśmy kilka dni, zanim się zorientowaliśmy. Po prostu chcę podzielić się moją wiedzą na temat problemu, który może pomóc innym ludziom.TFS 2010 - VersionControl.config nie jest poprawny i nie można go załadować.

Pracował wcześniej bez problemu przez około 2 lata. Ale nagle, kompilacje rozpoczęła niepowodzeniem z powodu następującego błędu:

Building the projects in this solution one at a time. To enable parallel build, please add the "/m" switch. MSBUILD : error MSB4017: The build stopped unexpectedly because of an unexpected logger failure. Microsoft.Build.Exceptions.InternalLoggerException: The build stopped unexpectedly because of an unexpected logger failure. ---> Microsoft.TeamFoundation.VersionControl.Client.VersionControlException: The cache file C:\Windows\system32\config\systemprofile\AppData\Local\Microsoft\Team Foundation\3.0\Cache\VersionControl.config is not valid and cannot be loaded. Please correct or delete the file. ---> System.NullReferenceException: Object reference not set to an instance of an object. at Microsoft.TeamFoundation.VersionControl.Client.InternalCacheLoader.LoadConfig(InternalCache currentCache, Boolean dataDirectoryExists, InternalWorkspaceConflictInfo[]& conflictingWorkspaces) --- End of inner exception stack trace --- at Microsoft.TeamFoundation.VersionControl.Client.InternalCacheLoader.LoadConfig(InternalCache currentCache, Boolean dataDirectoryExists, InternalWorkspaceConflictInfo[]& conflictingWorkspaces)

Usunięcie zawartości folderu Cache wymienionych w komunikacie o błędzie nie pomogło.

Wystąpił zbieżność 2 rzeczy w tym czasie:

  • serwer został uruchomiony z wolnego miejsca na dysku C:

  • nasi ludzie wsparcia były instalowanie aktualizacji systemu Windows, w tym dodatku Service Pack 1 także dla TFS.

Niektóre z naszych projektów były 32-bitowe, jak na przykład Silverlight, który musi być 32-bitowy, nigdy 64-ty. Jednak nasz serwer TFS jest 64-bitowy. Aby poprawnie skompilować projekty, definicje kompilacji powinny określać "Auto" (który uruchamia kompilację 64-bitową, tak jak serwer TFS) lub "X86", który wymusza kompilację 32-bitową.

Te, które są X86 rozpoczęły awarię nagle z wyżej wspomnianym błędem.

ROZWIĄZANIE:

Najwyraźniej, nie ma innej lokalizacji folderu Cache, a także: C: \ Windows \ SysWOW64 \ config \ systemprofile \ AppData \ \ Microsoft \ Team Foundation Local \ 3.0 \ Cache

Usunęliśmy zawartość tego folderu i wszystko zaczęło działać poprawnie.

BTW: nie ma nic wspólnego z przełącznikiem/m. Próbowaliśmy też, ale to nie pomogło.

+2

Proszę dokonać rozwiązanie odpowiedź (jest to w pełni uzasadnione, aby odpowiedzieć na swoje pytanie na SO. - w rzeczywistości jest to zachęcać) W ten sposób twoje pytanie nie pojawi się na liście „pytania bez odpowiedzi”. –

Odpowiedz

4

wyczyścić wszystkie foldery cache:

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

miałem ten sam problem po niskiej ostrzeżenia przestrzeni dyskowej.

Usunięcie/zmiana nazwy pliku C: \ Users \ user.name \ AppData \ Local \ Microsoft \ Team Foundation \ 4.0 \ Cache \ VersionControl.config rozwiązało problem w moim przypadku.

2

Team Explorer pojawił się jako podłączony do TFS. Ale "Explorer sterowania źródłami" został oznaczony jako odłączony.

usunięcie "C: \ Users \ user.name \ AppData \ Local \ Microsoft \ Team Foundation \ 4.0 \ Cache \ VersionControl.config" również rozwiązało problem. (thx)

1

Idąc za stwierdzeniem @ mhu, że katalogi TFS Cache powinny zostać wyczyszczone, wykonałem pełne wyszukiwanie folderów "Team Foundation", które miały podfolder Cache na moim serwerze kompilacji.

Następnie utworzyłem plik wsadowy, który usuwa je. Moje kompilacje działały po uruchomieniu tego skryptu.

Nazwa pliku: Zawartość ClearTFSCache.bat Plik:

@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 

Istnieją dwie zmienne, które należy tu zastąpić: -

  1. AAA_USERNAME jest dla nazwy użytkownika bieżącego użytkownika (w oparciu o ręcznie logowania do serwer).
  2. BBB_SERVICEACCOUNT jest dla konta używanego do uruchomienia TFS Build Service, dostępnej za pośrednictwem Team Foundation Server Administration Console:

    How to find out where TFS Cache is

    W moim przypadku było to 'sieciowa'.