Так что я пытаюсь получить файлы из рабочей области в 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
всегда имеет одно и то же значение (значение, которое он останавливает, отличается для каждого приложения).
У кого-нибудь есть идеи?
Edit: После добавления диагностической логики (на основе связи в ответ Гранта) Я даже более запутанной, чем когда-либо.
Рабочее пространство, в которое я перехожу, это $/QA/Automated Test Scripts/Regression or System Test Scripts/RDE or 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) Почему этот глохнет после попытки получить файл? Вполне возможно, что это связано с тем, что в Visual Studio открыто fmMain.cs
, но оно все равно должно исключаться и не зависеть. Я могу получить последние, пока файл открыт с помощью визуальной студии.
Edit2:
Хорошо, так что я читал через MSDN и я заметил, что имя рабочего пространства может быть локальный путь к файлам. Поэтому я изменил то, что я передал в качестве параметра workspaceName
в локальный каталог файлов. Я все еще получаю киоски, но файл журнала намного менее понятен по причине. Я загрузил файл tf.log here (я, очевидно, изменил проприетарную информацию, такую как имена серверов и проектов, но все остальное не тронуто). После этой последней записи журнала в журнал не записываются дополнительные данные.
Вы использовали wirehark для просмотра данных, идущих туда и обратно? Я думаю, что это в основном для человека. –
Никогда не слышал об этом раньше. Я проверю это. – KallDrexx