Попытка получить файлы из рабочего пространства TFS останавливает приложение

Итак, я пытаюсь получить файлы из рабочей области в TFS. К сожалению, каждая моя попытка сделать это приводит к зависанию приложения. На данный момент это код:

    public void GetWorkspaceFiles(string workspaceName)
    {
        VersionControlServer sourceControl = (VersionControlServer)TfsServer.GetService(typeof(VersionControlServer));

        var items = sourceControl.GetItems(workspaceName, VersionSpec.Latest, RecursionType.Full)
                                 .Items
                                 .Where(x => x.ItemType == ItemType.File)
                                 .ToList();

        for (int x = 0; x < items.Count; x++)
            items[x].DownloadFile();

Что происходит, так это то, что каждый раз, когда я запускаю это приложение (на нескольких машинах), оно останавливается на items [x] .DownloadFile () . Все файлы в TFS не заблокированы, все нормально. Попытка использовать метод Workspace.Get () приводит к тому же результату.

Если я нажму паузу, x будет определенным значением, но я не могу получить доступ к коллекции элементов, так как когда я это сделаю, я получаю «Невозможно оценить выражение, потому что текущий поток находится в спящем режиме, ждет или присоединяется». Когда я оцениваю стек вызовов, я получаю:

[In a sleep, wait, or join]
[External Code]
GetWorkspaceFiles(string workspaceName) Line 55

Я не понимаю, что делать дальше. Каждый раз, когда я приостанавливаю приложение, x всегда имеет одно и то же значение (однако значение, на котором оно останавливается, отличается для каждого запущенного приложения).

У кого-нибудь есть идеи?


Изменить:

Рабочее пространство, которое я передаю в этот метод, - $ / QA / Сценарии автоматического тестирования / Регрессия или Сценарии системного тестирования / RDE или Condo (проверено через отладчик).

Однако, когда я посмотрю в журналах tfs, похоже, загружается файл кода, который я запускаю, как говорится:

02/10/2011 12:26:58 (pid 5808, tid 5968, 42180 ms) Recording OperationStatus.Getting for $/QA/Automated Test Scripts/QA Tools/Test Manager/Test Polling Server/fmMain.cs

Сразу после этой записи:

02/10/2011 12:26:58 (pid 5808, tid 5968, 42180 ms) DownloadFiles: 18 ms
02/10/2011 12:26:58 (pid 5808, tid 5968, 42181 ms) Acknowledgements: 0 ms

После этого в файле журнала больше нет обновлений, и мое приложение остановился. Что меня смущает, так это

1) Почему я пытаюсь получить код приложения из TFS, когда я указываю совершенно другое рабочее пространство TFS

2) Почему это останавливается после попытки получить файл? Возможно, это потому, что fmMain.cs открыт в Visual Studio, но он все равно должен исключать и не зависать. Я' m может получить последнюю версию, пока файл открыт через Visual Studio в обычном режиме.



Edit2:

Хорошо, я читал через MSDN и заметил, что имя рабочего пространства может быть локальным путем к файлам. Поэтому я изменил то, что передал как параметр workspaceName , в локальный каталог файлов. Я все еще получаю лаги, но в файле журнала гораздо менее понятно, почему. Я загрузил файл tf.log сюда (я, очевидно, изменил конфиденциальную информацию, такую ​​как имена серверов и проектов, но все остальное осталось без изменений). После этой последней записи в журнал никакие дальнейшие данные не записываются.

5
задан KallDrexx 10 February 2011 в 18:28
поделиться