Как проверить и проверить файл из TFS, используя код C #? - PullRequest
2 голосов
/ 10 мая 2019

Я пытаюсь создать приложение Window Form, которое проверяет, вносит некоторые изменения в файл и проверяет файл в TFS.

Я могу выполнить эту операцию, используя приведенный ниже код. Единственная проблема, с которой я сталкиваюсь, заключается в динамическом получении пути tf.exe. Я не хочу, чтобы путь tf.exe был жестко закодирован в решении. tf.exe, который я пытаюсь открыть, находится в папке Visual Studio 2017.

foreach (string path in FilePaths)
{
  var proc = new Process
  {
    StartInfo = new ProcessStartInfo
    {
       FileName = @"C:\Program Files (x86)\Microsoft Visual Studio 
       14.0\Common7\IDE\tf.exe",
       Arguments = "checkout " + path,
       UseShellExecute = false,
       RedirectStandardOutput = true,
       CreateNoWindow = true
    }
  };
 proc.Start();
}

Путь, указанный в FileName, должен выбираться динамически.

1 Ответ

1 голос
/ 12 мая 2019

У вас есть несколько вариантов:

1) Добавить функцию, которая проверяет, где установлен tf.exe и возвращает местоположение (немного уродливо, и вам нужно обновить функцию, когда выходит новая версия VS):

private string GetTfLocation()
{
    string tfPath = "";
    // For VS 2015
    if (File.Exists(tfPath = @"C:\Program Files (x86)\Microsoft Visual Studio 2014\Common7\IDE]tf.exe"))
        return tfPath;
    // For VS 2017 Professional version
    if (File.Exists(tfPath = @"C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\Common7\IDE\CommonExtensions\Microsoft\TeamFoundaion\Team Explorer\Tf.exe"))
        return thPath;
    // And list all VS versions like above
    return null;
}

2) Попросите пользователя ввести местоположение или версию VS, которую он имеет, и сгенерировать версию (во втором варианте необходимо также обновить код с каждой новой версией VS):

Создайте новый TextBox, дайте имя (например: tfExeTxtBox), в вашем коде получите значение:

string tfExeLoacation = tfExeTxtBox.Text;

3) Используйте TFS DLL для выполнения действий и не запускайте tf.exe процесс:

Вам нужны 2 библиотеки DLL (доступны в NuGet):

Microsoft.TeamFoundation.Client
Microsoft.TeamFoundation.VersionControl.Client

Теперь вы можете выполнять все действия TFVC, например:

TfsTeamProjectcollection tfs = new TfsTeamProjectColletion(new Uri("tfs-server-url"));
VersionControlServer versionControl = (VersionControlServer)tfs.GetService(typeof(VersionControlServer));
Workspace workspace = versionControl.CreateWorkspace("newWorkSpace", "user name");
// Add to pending changes
workspace.PendAdd("workspace path");
var changes = workspace.GetPendingChanges();
// Check In
workspace.CheckIn(changes, "comment");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...