Получить файлы XML-документации из сценария TFS Team Build - PullRequest
0 голосов
/ 14 декабря 2010

У меня настроена схема репликации зависимостей в нашей среде TFS на основе http://geekswithblogs.net/jakob/archive/2009/03/05/implementing-dependency-replication-with-tfs-team-build.aspx.

При этом используется группа элементов CompilationOutputs для получения встроенных файлов DLL и их объединения / объединения в зависимые проекты. Моя проблема заключается в том, что группа элементов CompilationOutputs содержит только библиотеки DLL, и я хотел бы также включить файлы документации XML, чтобы при использовании этих библиотек я мог получить советы по документированию intellisense. Есть ли другая группа товаров, в которой они есть, или другой подход? Нужно ли вручную находить XML-файлы и добавлять их в группу товаров?

Сейчас мы находимся на TFS 2010, поэтому, если там есть что-то новое, мы можем попытаться воспользоваться этим (хотя было бы неплохо, если бы мне не пришлось преобразовывать всю эту схему для использования процесса Workflow. ..)

1 Ответ

1 голос
/ 23 декабря 2010

Согласно статье, которую вы копируете и проверяете выходные данные:

<Copy SourceFiles="@(CompilationOutputs)" DestinationFolder="$(ReplicateSourceFolder)"/>
<Exec Command="$(TF) checkin /comment:&quot;Checking in file from build&quot; &quot;$(ReplicateSourceFolder)&quot; /recursive"/>

Не могли бы вы добавить вторую строку копирования перед проверкой, чтобы скопировать XML-файлы с использованием метаданных?

<Copy SourceFiles="%(CompilationOutputs.RootDir)%(CompilationOutputs.Directory)\%(CompilationOutputs.Filename).xml" DestinationFolder="$(ReplicateSourceFolder)"/>

Вот еще один вариант использования встроенной задачи, которая создает другую группу элементов, изменяя расширение таким образом, чтобы добавлять только существующие документы doc:

 <Target Name="Test">

    <ChangeExtension InputFiles="@(CompilationOutputs)" Extension=".xml">
      <Output TaskParameter="OutputFiles" ItemName="DocFiles" />
    </ChangeExtension>

    <Copy SourceFiles="@(CompilationOutputs)" DestinationFolder="$(ReplicateSourceFolder)"/>
    <Copy SourceFiles="@(DocFiles)" DestinationFolder="$(ReplicateSourceFolder)"/>
  </Target>

  <UsingTask TaskName="ChangeExtension" TaskFactory="CodeTaskFactory" AssemblyFile="$(MSBuildToolsPath)\Microsoft.Build.Tasks.v4.0.dll">
    <ParameterGroup>
      <InputFiles ParameterType="Microsoft.Build.Framework.ITaskItem[]" Required="true"/>
      <Extension ParameterType="System.String" Required="true"/>
      <OutputFiles ParameterType="Microsoft.Build.Framework.ITaskItem[]" Output="true"/>
    </ParameterGroup>
    <Task>
      <Code Type="Fragment" Language="cs">
        <![CDATA[
      if (InputFiles.Length > 0)
      {
        List<TaskItem> results = new List<TaskItem>();
        for (int i = 0; i < InputFiles.Length; i++)
        {
          ITaskItem item = InputFiles[i];
          string path = item.GetMetadata("FullPath");
          string docfile = Path.ChangeExtension(path, Extension);
          if (File.Exists(docfile))
          {
            results.Add(new TaskItem(docfile));
          }
        }
        OutputFiles = results.ToArray();
      }
        ]]>
      </Code>
    </Task>
  </UsingTask>
...