Как вы строите проект рабочего процесса Windows с NAnt 0.90? - PullRequest
0 голосов
/ 21 мая 2010

Я пытаюсь создать проект Windows Workflow (WF), используя NAnt, но, похоже, он не может создать файлы ".xoml" и ".rules".

Вот код задачи csc, которую я использую:

<csc debug="${build.Debug}" warninglevel="${build.WarningLevel}" target="library" output="${path::combine(build.OutputDir,assembly.Name+'.dll')}" verbose="${build.Verbose}" doc="${path::combine(build.OutputDir,assembly.Name+'.xml')}">
  <sources basedir="${assembly.BaseDir}">
    <include name="**/*.cs" />
    <include name="**/*.xoml" />
    <include name="**/*.rules" />
  </sources>
  <resources basedir="${assembly.BaseDir}">
    <include name="**/*.xsd" />
    <include name="**/*.resx" />
  </resources>
  <references>
    ...
  </references>
</csc>

Вот вывод:

Компиляция 21 файла в 'c: \ Output \ MyWorkFlowProject.dll'.

[csc] c: \ Projects \ MyWorkFlowProject \ AProcessFlow.xoml (1,1): ошибка CS0116: пространство имен не содержит непосредственно элементы, такие как поля или методы

[csc] c: \ Projects \ MyWorkFlowProject \ BProcessFlow.xoml (1,1): ошибка CS0116: пространство имен не содержит непосредственно элементы, такие как поля или методы

[csc] c: \ Projects \ MyWorkFlowProject \ CProcessFlow.rules (1,1): ошибка CS0116: пространство имен не содержит непосредственно элементы, такие как поля или методы

[csc] c: \ Projects \ MyWorkFlowProject \ CProcessFlow.xoml (1,1): ошибка CS0116: пространство имен не содержит непосредственно элементы, такие как поля или методы

Ответы [ 2 ]

2 голосов
/ 22 мая 2010

Если вы посмотрите, как Visual Studio / MSBuild компилирует проект WF, вы увидите, что для этого требуется намного больше.

Поэтому использовать NAnt для запуска MSBuild и компилировать файлы проекта Visual Studio для вас - безусловно, лучший и единственный вариант.

0 голосов
/ 25 мая 2010

Вместо непосредственного вызова компилятора, почему бы не использовать MSBuild? Он обрабатывает компиляцию, ссылки и т. Д., Поскольку он работает с файлом решения. Поэтому будут использованы настройки в решении и проектах, вам не нужно выписывать параметры, как в вашем примере.

NAnt не имеет прямой функциональности для MSBuild, как это имеет для компиляторов; тем не менее, NAntContrib имеет задачу msbuild. Это то, что я использую, это делает процесс компиляции очень простым в моем скрипте сборки. Вот как выглядит моя задача компиляции:

<target name="compile" description="build the application">
    <loadtasks assembly="${dir.tools}\nantcontrib\NAnt.Contrib.Tasks.dll" />

    <msbuild project="${dir.src}\${file.solution}" verbosity="Minimal" failonerror="true" verbose="false">
        <property name="Configuration" value="${project.config}" />
    </msbuild>
</target>
...