У вас есть несколько вариантов:
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");