Unfortunately, we don’t have a .Net 3.5-compatible NAnt distribution yet, but it’s trivial to get the latest version (.85) working with .Net 3.5 and a Visual Studio 2008 solution. Open up you nant.exe config file, and add the following framework node just below your net-2.0 node. Not much of a change, and it’s working well for me.
<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=”SOFTWAREMicrosoft.NETFrameworkInstallRoot”
hive=”LocalMachine” />
<readregistry
property=”sdkInstallRoot”
key=”SOFTWAREMicrosoft.NETFrameworksdkInstallRootv2.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>
Next, change the following in your NAnt build:
<property name=”nant.settings.currentframework” value=”net-3.5″ />
Now you are off to the races. If you have any differing experiences, please let me know.