Итак, у меня есть приложение .NET, которое анализирует и генерирует серию файлов, выводит их в локальный каталог и затем определяет, нужно ли ему обновить существующий файл или добавить новый файл в проект TFS (Team Foundation Server).
У меня есть одно рабочее пространство на локальном компьютере, и есть 10 различных рабочих папок, которые являются другими проектами кодирования, над которыми я работал с этой конкретной машиной. Моя проблема возникает, когда я проверяю, существует ли файл в проекте TFS и требуется ли обновление или его нужно добавить в проект в качестве нового файла.
snipet:
static string TFSProject = @"$/SQLScripts/";
static WorkspaceInfo wsInfo;
static VersionControlServer versionControl;
static string argPath = "E:\\SQLScripts\\";
wsInfo = Workstation.Current.GetLocalWorkspaceInfo(argPath);
TeamFoundationServer tfs = new TeamFoundationServer(wsInfo.ServerUri.AbsoluteUri);
versionControl = (VersionControlServer)tfs.GetService(typeof(VersionControlServer));
Workspace workspace = versionControl.GetWorkspace(wsInfo);
workspace.GetLocalItemForServerItem(TFSProject);
На этом этапе я проверяю, существует ли файл, и делаю одно из двух. если файл существует, я помечаю файл для EDIT, а затем записываю файл в локальный каталог, в противном случае я сначала запишу файл, а затем добавлю файл в рабочую область. Меня не волнует, идентичен ли физический файл тому, который я генерирую, поскольку я делаю это как требование SAS70 для «отслеживания изменений»
Если он существует, я делаю:
workspace.PendEdit (имя файла, RecurisionType.Full);
scriptoutthefile (имя файла);
или если его не существует
scriptoutthefilename (имя файла);
workspace.PendAdd (имя файла, правда);
Хорошо, все это, чтобы добраться до проблемы. Когда я проверяю ожидающие изменения в ПРОЕКТЕ, я получаю все ожидающие изменения для всех проектов, которые есть на моем локальном компьютере в рабочей области.
// Show our pending changes.
PendingChange[] pendingChanges = workspace.GetPendingChanges();
foreach (PendingChange pendingChange in pendingChanges)
{
dosomething...
}
Я подумал, что, установив рабочее пространство в workspace.GetLocalItemForServerItem (TFSProject), он даст мне ТОЛЬКО объекты для этой конкретной рабочей папки.
Есть ли способ заставить объект рабочей области работать только с определенной рабочей папкой?
Это имело смысл? Заранее спасибо ...