如何使用NAnt 0.90构建Windows Workflow项目?

时间:2010-05-21 17:39:52

标签: c# .net-3.5 workflow-foundation nant

我正在尝试使用NAnt构建Windows Workflow(WF)项目,但它似乎无法构建“.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 个答案:

答案 0 :(得分:2)

如果你看看Visual Studio / MSBuild如何编译一个WF项目,你会发现它需要更多。

因此,使用NAnt驱动MSBuild并为您编译Visual Studio项目文件是目前为止最好也是唯一的选择。

答案 1 :(得分:0)

为什么不使用MSBuild而不是直接调用编译器?它处理编译,引用等,因为它解决了解决方案文件。因此,将使用解决方案和项目中的设置,您不需要像示例中那样写出参数。

对于MSBuild,NAnt没有像编译器一样的任何直接功能;但是,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>