Построение подпроектов с использованием NANT

#c# #.net #nant

#c# #.net #nant

Вопрос:

Я пытаюсь создать проект (A) с использованием NANT. Проект (A) основан на другом проекте (B), который также построен с использованием NANT. Я хочу иметь возможность вызывать сборку зависимого проекта (B) из сборки проекта (A). Я попытался включить файл сборки проекта B в файл сборки проекта A. Это приводит к ошибке, поскольку два файла сборки содержат цели с одинаковыми именами.

Есть ли способ присвоить псевдоним включенному файлу сборки?

Ответ №1:

Вы можете сделать это следующим образом, создав «родительский» файл сборки, который использует действие «nant» для вызова других файлов сборки.

 <target name="rebuild" depends="" >
    <nant target="${target::get-current-target()}">
        <buildfiles>
            <include name="projectB.build" />
            <include name="projectC.build" />
        </buildfiles>
    </nant>
</target>
  

Ответ №2:

Я пытался сделать это с помощью задачи include, но обнаружил, что задача nant — это на самом деле то, что мне требовалось.

Ответ №3:

У вас может быть несколько таких целевых объектов в вашем ‘master’ файле. Я часто использую следующую конструкцию для совместного использования набора файлов сборки между целевыми объектами, чтобы упростить обслуживание скрипта.

 <fileset id="buildfiles.all">
    <include name="projectB.build"/>
    <include name="projectB.build"/>
</fileset>

<target name="build">
    <nant target="${target::get-current-target()}">
        <buildfiles refid="buildfiles.all" />
    </nant>
</target>

<target name="clean">
    <nant target="${target::get-current-target()}">
        <buildfiles refid="buildfiles.all" />
    </nant>
</target>

<target name="publish">
    <nant target="${target::get-current-target()}">
        <buildfiles refid="buildfiles.all" />
    </nant>
</target>