0

Когда я создаю патч для более старой версии нашего продукта, я использую Source Control Explorer для просмотра истории для ветки. Затем я просматриваю каждый набор изменений в этой истории и записываю каждый отдельный проект. Затем я посещаю каждый проект и получаю его первичную сборку, которую я копирую в папку bin при подготовке к ветке. У VS 2012 или TFS есть API, который я могу использовать для этого, или есть набор команд CLI, которые по крайней мере дадут мне список сборок, которые я могу затем скопировать с помощью команды for?Как получить проекты с изменениями в истории филиала?

+0

Я не уверен, что следую тому, что вы делаете? Вы хотите найти только файлы в сборках, которые были изменены с момента времени? Могут быть несколько ошибок, например, публичные константы/аргументы по умолчанию, или люди, использующие «Добавить в качестве ссылки» для включения файлов из других проектов? – DaveShaw

+0

Проблемы, возникшие позже, являются проблемой. На данный момент я хочу получить все изменения в истории ветви, а затем для каждого набора изменений получить основную сборку вывода каждого проекта в этом наборе изменений, где эта сборка включена в этот набор изменений. – ProfK

+0

В TFS ничего нет, возможно, стороннее расширение, но не одно, о котором я знаю. Анализ результатов тестирования может быть способен, но я не уверен, поскольку это не его основная функция. – DaveShaw

ответ

0

Вы можете получить набор изменений и файлы в наборе изменений для ветки через TFS API, однако, похоже, это не метод получения выходной сборки для проекта. Для получения подробной информации о том, как получить информацию о наборе изменений, прочитайте следующий код:

TfsTeamProjectCollection tpc = TfsTeamProjectCollectionFactory.GetTeamProjectCollection(new Uri("http://tfsservername:8080/tfs/DefaultCollection")); 
     VersionControlServer vcs = (VersionControlServer)tpc.GetService(typeof(VersionControlServer)); 

     var changesetlist = vcs.QueryHistory(
              "$/BranchServerPath", 
              VersionSpec.Latest, 
              0, 
              RecursionType.Full, 
              null, 
              new ChangesetVersionSpec(1), 
              VersionSpec.Latest, 
              int.MaxValue, 
              true, 
              false); 

     foreach (Changeset changeset in changesetlist) 
     { 
      Console.WriteLine(changeset.ChangesetId + ": "); 
      Console.WriteLine("*****************"); 
      var changes = changeset.Changes; 
      foreach (var change in changes) 
      { 
       var filename= change.Item.ServerItem; 
      } 
     } 
Смежные вопросы