Search code examples
buildnantpublish

Publish WebApplication using NAnt


Is it possible to accomplish publish (as in Visual Studio publish on Web Application project) on solution using NAnt? I just can't find the solution.


Solution

  • They key is to use the built-in "_CopyWebApplication" target.

    Here is what i do

    <target name="compile" description="Compiles the project.">
            <exec basedir="." program="${DotNetPath}msbuild.exe" commandline=" src/MyProject.Web/MyProject.Web.csproj /nologo 
      /t:Rebuild
      /t:ResolveReferences;_CopyWebApplication
      /p:OutDir=../../output/build/bin/
      /p:WebProjectOutputDir=../../output/build/
      /p:Debug=${debug}
      /p:Configuration=${configuration}
      /v:m"
        workingdir="." failonerror="true" />
        </target>
    

    with the dir structure of:

    /project.build
    /src/myprojct.sln
    /src/myporject.web/myproject.web.csproj
    /output
    

    Edit: i also use this to use the YUI compression to compress my css and js

    <target name="compress-js">
            <foreach item="File" property="filename">
                <in>
                    <items basedir="output/build/assets/javascript/">
                        <include name="/**/*.js" />
                        <exclude name="/**/*.min.js" />
                        <exclude name="/**/*.pack.js" />
                    </items>
                </in>
                <do>
                    <exec basedir="." program="${JavaPath}java" commandline=" -jar S:\yuicompressor-2.4.1\build\yuicompressor-2.4.1.jar --type js --charset utf-8 -o &quot;${filename}&quot; &quot;${filename}&quot;" failonerror="true" />
                </do>
            </foreach>
        </target>
    
    
        <target name="compress-css" depends="combine-css">
            <foreach item="File" property="filename">
                <in>
                    <items basedir="output/build/assets/css/">
                        <include name="/**/*.css" />
                        <exclude name="/**/*.min.css" />
                        <exclude name="/**/*.pack.css" />
                    </items>
                </in>
                <do>
                    <exec basedir="." program="S:\Java\jdk1.6.0_11\bin\java" commandline=" -jar S:\yuicompressor-2.4.1\build\yuicompressor-2.4.1.jar --type css --charset utf-8 -o &quot;${filename}&quot; &quot;${filename}&quot;" failonerror="true" />
                </do>
            </foreach>
        </target>