单声道:使用nant 0.92编译c#

时间:2014-09-05 03:47:38

标签: c# batch-file mono nant

我在Mono框架中运行nant脚本时遇到了问题。

当我使用mono-3.5运行nant scipt时出现此错误。

enter image description here

这是我的nant scipt。

<target name="compile-libs" depends="prepare" description="Compile the libraries">
        <csc target ="library" output="${bin.lib.1}/lib.dll" debug="false">
        <sources>
                <include name="${src.lib.1}/${arg}/*"/>
        </sources>
      </csc>
</target>

它出了什么问题?

然后,我改为使用bat文件来编译c#。有用。但是,它只执行第一个命令,然后停止。

echo compile lib1:
mcs /target:library /out:build\bin-lib-v1.0\lib.dll src-lib-v1.0\lib\%1\foo.cs
echo compile lib2:
mcs /target:library /out:build\bin-lib-v2.0\lib.dll src-lib-v2.0\lib\%1\foo.cs

bat文件只生成了第一个库。它没有回应&#34;编译lib2&#34;。

先谢谢!

1 个答案:

答案 0 :(得分:0)

如果mcs是一个bat文件(执行where mcs以检查是否是mcs.bat),当你调用另一个bat这样的bat文件时

mcs /target:library /out:build\bin-lib-v1.0\lib.dll src-lib-v1.0\lib\%1\foo.cs

执行当前的bat停止,并传递给mcs.bat而不返回

你应该这样做:

call mcs /target:library /out:build\bin-lib-v1.0\lib.dll src-lib-v1.0\lib\%1\foo.cs

而不是nant(如果您更喜欢xml),只需使用msbuild(单声道上的xbuild),就有类似的CSC任务,请参阅http://msdn.microsoft.com/en-us/library/ms171479(v=vs.90).aspx

最佳(恕我直言)更复杂的情况,FAKE