Visual Studio 2008, MSBuild and NAnt 0.85

I’ve installed NAnt 0.85 expecting it to work immediately in compiling MSBuild task. Unfortunately I painfully discovered that it doesn’t work like that. The MSBuild task produced an error complaining that .Net framework 2.0 failed.

It turns out that Visual Studio 2008 solutions standardly compiles to .Net framework 3.5 and NAnt 0.85 only compiles to .Net 2.0. After trying to find out where is exactly in the NAnt build file that specify the .Net version, it turns out that the settings is in nant.exe.config in NAnt /bin directory.

If you happens to find the same problem, you need to add the following code in nant.exe.config :

        <framework
       name="net-3.5"
       family="net"
       version="3.5"
       description="Microsoft .NET Framework 3.5"
       runtimeengine=""
       sdkdirectory="${path::combine(sdkInstallRoot, ‘bin’)}"
       frameworkdirectory="${path::combine(installRoot, ‘v3.5′)}"
       frameworkassemblydirectory="${path::combine(installRoot, ‘v2.0.50727′)}"
       clrversion="2.0.50727"
                    >

          <task-assemblies>

            <!– include .NET specific assemblies –>

            <include name="tasks/net/*.dll" />

            <!– include .NET 2.0 specific assemblies –>

            <include name="tasks/net/2.0/**/*.dll" />

            <!– include Microsoft.NET specific task assembly –>

            <include name="NAnt.MSNetTasks.dll" />

            <!– include Microsoft.NET specific test assembly –>

            <include name="NAnt.MSNet.Tests.dll" />

          </task-assemblies>

          <project>

            <readregistry

property="installRoot"

key="SOFTWARE\Microsoft\.NETFramework\InstallRoot"

hive="LocalMachine" />

            <readregistry

property="sdkInstallRoot"

key="SOFTWARE\Microsoft\.NETFramework\sdkInstallRootv2.0"

hive="LocalMachine"

failonerror="false" />

          </project>

          <tasks>

            <task name="csc">

              <attribute name="exename">csc</attribute>

              <attribute name="supportsnowarnlist">true</attribute>

              <attribute name="supportswarnaserrorlist">true</attribute>

              <attribute name="supportskeycontainer">true</attribute>

              <attribute name="supportskeyfile">true</attribute>

              <attribute name="supportsplatform">true</attribute>

              <attribute name="supportslangversion">true</attribute>

            </task>

            <task name="vbc">

              <attribute name="exename">vbc</attribute>

              <attribute name="supportsdocgeneration">true</attribute>

              <attribute name="supportsnostdlib">true</attribute>

              <attribute name="supportsnowarnlist">true</attribute>

              <attribute name="supportskeycontainer">true</attribute>

              <attribute name="supportskeyfile">true</attribute>

              <attribute name="supportsplatform">true</attribute>

              <attribute name="supportswarnaserrorlist">true</attribute>

            </task>

            <task name="jsc">

              <attribute name="exename">jsc</attribute>

              <attribute name="supportsplatform">true</attribute>

            </task>

            <task name="vjc">

              <attribute name="exename">vjc</attribute>

              <attribute name="supportsnowarnlist">true</attribute>

              <attribute name="supportskeycontainer">true</attribute>

              <attribute name="supportskeyfile">true</attribute>

            </task>

            <task name="resgen">

              <attribute name="exename">resgen</attribute>

              <attribute name="supportsassemblyreferences">true</attribute>

              <attribute name="supportsexternalfilereferences">true</attribute>

            </task>

            <task name="al">

              <attribute name="exename">al</attribute>

            </task>

            <task name="delay-sign">

              <attribute name="exename">sn</attribute>

            </task>

            <task name="license">

              <attribute name="exename">lc</attribute>

              <attribute name="supportsassemblyreferences">true</attribute>

            </task>

            <task name="ilasm">

              <attribute name="exename">ilasm</attribute>

            </task>

            <task name="ildasm">

              <attribute name="exename">ildasm</attribute>

            </task>

          </tasks>

        </framework>

No Responses to “Visual Studio 2008, MSBuild and NAnt 0.85”

You can subscribe to the RSS feed for comments on this post. You can also reply to this post directly in your weblog, and take advantage of the TrackBack URI to record your reply in this post.

  1. No comments posted yet

Leave a comment

Line and paragraph breaks automatic, e-mail address never displayed, HTML allowed: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>