Есть ли еще способ программно получить последнюю версию репозитория TFVC в C #, VS2019? - PullRequest
0 голосов
/ 26 октября 2019

Я пытаюсь собрать инструменты в C #, чтобы помочь автоматизировать часть компании, в которой я работаю, систему сборки и развертывания. Самым последним инструментом, которому я был назначен, является что-то, чтобы увидеть, были ли какие-либо члены определенной группы файлов в системе контроля версий TFS изменены на сервере с момента последнего выпуска.

Чтобы убедиться, чтона сервере, на котором работает этот инструмент автоматизации, изменений не было, пока просто не выяснил, я хочу иметь возможность выполнять в коде C # что-то похожее на команду tf vc getиз интерфейса командной строки в TFVC. Я нашел несколько фрагментов документации, относящейся к этому и аналогичным вопросам, задаваемым в Stack Overflow о том, как это сделать, но все они были для VS2010 или более ранней версии, и API-интерфейсы, на которые они ссылаются, больше не обновляются на веб-сайте Microsoft.

В более свежих версиях Team Foundation Server, есть ли способ программно вызвать что-то, что выполняло бы что-то похожее на команду «Получить последнюю версию» из Visual Control Explorer в Visual Studio?

Small censored screenshot of Source Control Explorer in TFS

1 Ответ

1 голос
/ 27 октября 2019

Эта операция не существует в версиях API отдыха Azure DevOps (TFS), но вы можете использовать старую версию, она все еще работает с TFS 2018/9. если вы установите Microsoft.TeamFoundation.ExtendedClient NuGet, он должен быть там.

Пример его использования:

connection = new TfsTeamProjectCollection(new Uri("tfs url"));
connection.Authenticate();
var = versionControl = connection .GetService<VersionControlServer>();
var worksapce = versionControl.GetWorkspace("local-path-of-the-workspace");
// Do the "Get Latest":
workspace.Get();

Другой вариант - использовать утилиту tf.exe и запустить ее непосредственно изкод c #, как и каждый .exe файл, например:

string tfPath = "path/to/tf/exe"
string arguments = "vc get ......"
ProcessStartInfo info = new ProcessStartInfo(tfPath, arguments);
info.CreateNoWindow = true;
info.WindowStyle = ProcessWindowStyle.Hidden;
Process p = Process.Start(info);
p.WaitForExit();
...