Удаление DLL-файлов модульного теста при использовании WIX - PullRequest
3 голосов
/ 26 октября 2011

Я пытаюсь создать MSI для своего проекта с использованием WIX. У меня есть HEAT, указывающая на правильный каталог, и файл, который он выдает, является правильным, но по какой-то причине, когда я фактически запускаю на нем MSBuild, он также дает мне все мои файлы DLL модульного теста.

Кто-нибудь знает, как удалить их из процесса сборки?

Ответы [ 2 ]

3 голосов
/ 16 ноября 2011

Один из вариантов - написать XSL-преобразование, модифицирующее сгенерированный вывод HEAT (например, удалив ненужные файлы):

heat.exe dir <other arguments> -t my.xsl

Чтобы удалить конкретный файл, ваш xsl может выглядеть примерно так:

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:msxsl="urn:schemas-microsoft-com:xslt" exclude-result-prefixes="msxsl"
>
  <xsl:output method="xml" indent="yes"/>

  <xsl:template match="@* | node()">
    <xsl:copy>
      <xsl:apply-templates select="@* | node()"/>
    </xsl:copy>
  </xsl:template>
  <xsl:template match="node()[child::node()[@Source='UnwantedAssembly.dll']]" />
</xsl:stylesheet>

Этот подход позволяет также вносить другие изменения в файл.Хотя для удаления только нежелательных файлов обычно проще просто удалить их из каталога сборки или переместить нужные файлы в другой каталог и запустить там HEAT.

1 голос
/ 16 ноября 2011

Как правило, по этой причине вы не указали бы файл heat.exe в каталоге сборки по умолчанию. После компиляции бинарных файлов вашего продукта добавьте второй шаг, чтобы поместить нужные файлы во второй каталог. Затем укажите heat.exe на промежуточный каталог. Таким образом, вы получаете больше контроля над файлами и путями, которые собираются.

...