То, что вы пытаетесь сделать , может быть уже встроено в tf.exe
как команда folderdiff
.Это покажет вам различия между вашим локальным исходным деревом и последней версией на сервере.Например:
tf folderdiff C:\MyTFSWorkspace\ /recursive
Эта функция также существует в клиентах TFS как в Visual Studio, так и в Eclipse.Просто перейдите к пути в Source Control Explorer и выберите «Сравнить с ...». Тем не менее, есть определенные причины, по которым это было бы полезно иметь за пределами
Если это не совсем то, что выпосле этого я бы предложил не пытаться написать tf.exe
, а вместо этого использовать TFS SDK для непосредственного общения с сервером.* get
* * * * * * * * * * * * * * * * * * * * *
* * * * * * * *1018* * * * * * * * * * tf.exe
*1016* *1016* * *1016* *1016* * * * * * * * * 10 * * * * * *1013* * *1016* * * * * * * * * * может быть просто для загрузки файла во временную папку для сравнения.TFS SDK является мощным и довольно простым.Вы должны быть в состоянии соединиться с сервером и загрузить временные файлы довольно легко.Этот фрагмент кода не протестирован и предполагает, что у вас есть сопоставление рабочей области на folderPath
, которое вы хотите сравнить с последней версией на сервере.
/* Some temporary directory to download the latest versions to, for comparing. */
String tempDir = @"C:\Temp\TFSLatestVersion";
/* Load the workspace information from the local workspace cache */
WorkspaceInfo workspaceInfo = Workstation.Current.GetLocalWorkspaceInfo(folderPath);
/* Connect to the server */
TfsTeamProjectCollection projectCollection = new TfsTeamProjectCollection(WorkspaceInfo.ServerUri);
VersionControlServer vc = projectCollection.GetService<VersionControlServer>();
/* "Realize" the cached workspace - open the workspace based on the cached information */
Workspace workspace = vc.GetWorkspace(workspaceInfo);
/* Get the server path for the corresponding local items */
String folderServerPath = workspace.GetServerItemForLocalItem(folderPath);
/* Query all items that exist under the server path */
ItemSet items = vc.QueryItems(new ItemSpec(folderServerPath, RecursionType.Full),
VersionSpec.Latest,
DeletedState.NonDeleted,
ItemType.Any,
true);
foreach(Item item in items.Items)
{
/* Figure out the item path relative to the folder we're looking at */
String relativePath = item.ServerItem.Substring(folderServerPath.Length);
/* Append the relative path to our folder's local path */
String downloadPath = Path.Combine(folderPath, relativePath);
/* Create the directory if necessary */
String downloadParent = Directory.GetParent(downloadPath).FullName;
if(! Directory.Exists(downloadParent))
{
Directory.CreateDirectory(downloadParent);
}
/* Download the item to the local folder */
item.DownloadFile(downloadPath);
}
/* Launch your compare tool between folderPath and tempDir */