Задача объединения файлов CC.NET и динамические значения - PullRequest
3 голосов
/ 31 декабря 2010

Как я могу использовать CCNetLabel в задаче слияния файлов? Из того, что я нашел, я должен использовать dynamicValues. У меня есть что-то вроде этого, и это не помогает никакой помощи?

<publishers>
  <merge>
    <dynamicValues>
      <replacementValue property="files">
        <format>D:\Testoutput\{0}\*.xml</format>
        <parameters>
          <namedValue name="$CCNetLabel" value="Default" />
        </parameters>
      </replacementValue>
    </dynamicValues>
  </merge>
  <xmllogger />
  <modificationHistory onlyLogWhenChangesFound="true" />
  <statistics />
</publishers>

1 Ответ

3 голосов
/ 05 февраля 2011

В вашем скрипте вы пытаетесь сгенерировать следующую конфигурацию (намеренно я использую сокращенную запись, которая легче читается):

<publishers>
  <merge>
    <files>D:\Testoutput\$[$CCNetLabel]\*.xml</files>
  </merge>
  <xmllogger />
  <modificationHistory onlyLogWhenChangesFound="true" />
  <statistics />
</publishers>

Это не сработает, потому что <files> - это массив, поэтому вам нужно что-то вроде:

<publishers>
  <merge>
    <files>
      <file>D:\Testoutput\$[$CCNetLabel]\*.xml</file>
    </files>
  </merge>
  <xmllogger />
  <modificationHistory onlyLogWhenChangesFound="true" />
  <statistics />
</publishers>

К сожалению, это тоже не работает, потому что <dynamicValues> поддерживается только для <merge>, но не для тега <files>. Я не думаю, что в настоящее время (версия 1.6) можно вообще использовать здесь свойства интеграции.

Я бы использовал следующий обходной путь для достижения того же результата:

<publishers>
  <exec>
    <executable>C:\Windows\system32\cmd.exe</executable>
    <buildArgs>/C copy D:\Testoutput\$[$CCNetLabel]\*.xml D:\Testoutput\FixedDir</buildArgs>
  </exec>
  <merge>
    <files>
      <file>D:\Testoutput\FixedDir\*.xml</file>
    </files>
  </merge>
  <xmllogger />
  <modificationHistory onlyLogWhenChangesFound="true" />
  <statistics />
  <exec>
    <executable>C:\Windows\system32\cmd.exe</executable>
    <buildArgs>/C del D:\Testoutput\FixedDir\*.xml</buildArgs>
  </exec>
</publishers>
...