我正在尝试使用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:命名空间不直接包含字段或方法等成员
答案 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>