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=”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>
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.
It looks like Nant 0.86-beta1 supports MS framework 3.5 except for the task.
http://nant.sourceforge.net/release/0.86-beta1/releasenotes.html
I did the change on nant.exe.config but apparently the problem lies on the “solution” task. As soon as it reads my solution file with the “Microsoft Visual Studio Solution File, Format Version 10.00″ in the first line, it throws an error: Nant.Core.BuildException: Solution of file ‘pathToSolution\name.sln’ is not supported. I tried running with Nant 0.85 and .086 and I still nothing. However, v 0.86 does include the necessary entries in the nant config file for .net 3.5 . From the Nant 0.86 release notes:
.NET Framework 3.5
Support for targeting .NET Framework 3.5 and Mono 3.5 Profile is now available.
Note: this does not apply to the task.
Does anybody knows a work around?
Thanks
sorry I didn’t add NantContrib elements in Nant, but now it says to me that : Visual Studio solution version ’10.0′ is not supported!
when i use Nant 0.85 and i add this code, when i try Nant it says to me : . Unknown task or datatype!
invalid element
Can somebody help me?
please
net Framework 2.0 & 3.5 are installed
the .Net Framework is intalled on my pc
Maybe but for this project i want and i need to work with the .Net Framework 3.5
@Nicolas,
Several folks have solved this problem by installing the .Net 2.0 SDK.
I’m sorry but in my case it doesn’t work!
i’ve got an error with the sdkInstallRoot, please help me!
I did something similar a while back (for .net3.5 Beta 2), but to get that to work, I had to copy to SYstem.dll file from the Framework\v2.0.50727 folder to the Framework\v3.5 folder
Thanks a million, Jeff! This post was very helpful.
thanks for the bail out Jeff, this works great!
Great tip and good timing! I used this at my talk yesterday on source control!
It looks like the nightly release for NAnt (a.k.a. .86 beta 1) supports .Net 3.5.
http://nant.sourceforge.net/nightly/latest/releasenotes.html