NAnt和MSBuild命令行困境

时间:2008-11-03 13:03:28

标签: msbuild nant

我正在尝试配置NAnt以自动化我的构建过程 - 一旦我完成了这一步,我将整合单元测试。

也许我并不确切地知道自己想要什么,所以如果有完全不同的方式来做所有这些,请纠正我......

我想要两个NAnt目标,一个快速完成,调试构建以确保一切正常并且测试通过,另一个目标是进行正确的编译和发布(它是一个Web应用程序项目)

我的问题是......

  1. 我不能让MSBuild只编译dll,它总是用它复制所有的web-app垃圾(图像,css,.aspx文件等)。有办法阻止这个吗?如果是这样,怎么样?
  2. 当我使用/ t编译时编译,它仍在为dll创建.pdb文件。它是否正确?我认为这些是针对调试器的,因此在进行发布编译时不应该出现?
  3. 这是完整版本编译(发布)的NAnt目标:

    <target name="build.deploy" description="Compile Web Site." depends="init">
        <exec basedir="." program="C:\WINDOWS\Microsoft.NET\Framework\v3.5\msbuild.exe" commandline=" MyProj/Interface/Interface.csproj /nologo
            /t:Compile
            /t:ResolveReferences;_CopyWebApplication
            /p:OutDir=../../deploy/bin/
            /p:WebProjectOutputDir=../../deploy/;AspNetConfiguration=Release"
            workingdir="." failonerror="true" />
    </target>
    

    谢谢你的帮助!

    P.S。如果有更简单的方法,我不必使用msbuild。我首先尝试使用CSC,但我无法解决所有引用的问题。建议非常欢迎

1 个答案:

答案 0 :(得分:4)

我建议您使用NAnt-Contrib msbuild task而不是直接调用MSBuild。

例如,在我的Protocol Buffers项目中,我有这个:

<target name="build"
        description="Builds all C# code">
  <msbuild project="${src}/ProtocolBuffers.sln">
    <property name="Configuration"
              value="${build-configuration}" />
  </msbuild>
</target>

build-configurationRelease时,它不会构建PDB。这取决于您在Visual Studio中如何设置项目 - 您可以仍然为优化的发行版本构建PDB。

编辑:至于“额外垃圾”的东西 - 它将完成Visual Studio中的任何构建。如果你可以在VS中乱七八糟地按照你想要的方式切换各种选项,它也可以在NAnt / MSBuild中正常工作。