I'm curious if it's possible to use Nant to target the .NET 4.5 using the C# 5.0 compiler. As of right now, the latest version only states support for .NET 4.0.
I tried downloading the source and building the .sln with msbuild after installing the .net 4.5 framework, but that yielded a large number of errors.
NAnt is a free . NET build tool.
NET Framework 4.5. 2, 4.6, and 4.6. 1 will reach end of support* on April 26, 2022. After this date, we will no longer provide updates including security fixes or technical support for these versions.
NAnt is a free and open source software tool for automating software build processes. It is similar to Apache Ant, but targeted at the . NET environment rather than Java.
2 Multi-Targeting Pack Language Packs: Contains the IntelliSense files to display help while building apps that target the . NET Framework 4.5. 2 through Visual Studio and third party IDEs.
Might be best to hit NAnt mailing list with your findings. It's not that active, but NAnt will definitely get an update to support the new framework. Problem is, Microsoft usually changes file locations with new release and registry keys pointing to those files change as well, so it's not really possible to support it before there's an actual release from Microsoft. for tests.
I have it running currently, targeting 4.5. In NAnt.exe.config
, change the <startup>
node:
<startup>
<!-- .NET Framework 4.5 -->
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5"/>
<!-- .NET Framework 4.0 -->
<supportedRuntime version="v4.0.30319" />
<!-- .NET Framework 2.0 -->
<supportedRuntime version="v2.0.50727" />
</startup>
I've also added a new <framework>
node (copy of net-4.0 except for reference assemblies):
<framework
name="net-4.5"
family="net"
version="4.5"
description="Microsoft .NET Framework 4.5"
sdkdirectory="${sdkInstallRoot}"
frameworkdirectory="${path::combine(installRoot, 'v4.0.30319')}"
frameworkassemblydirectory="${path::combine(installRoot, 'v4.0.30319')}"
clrversion="4.0.30319"
clrtype="Desktop"
vendor="Microsoft"
>
<runtime>
<probing-paths>
<directory name="lib/common/2.0" />
<directory name="lib/common/neutral" />
</probing-paths>
<modes>
<strict>
<environment>
<variable name="COMPLUS_VERSION" value="v4.0.30319" />
</environment>
</strict>
</modes>
</runtime>
<reference-assemblies basedir="${path::combine(installRoot, 'v4.0.30319')}">
<include name="Accessibility.dll" />
<include name="Microsoft.Build.Conversion.v4.0.dll" />
<include name="Microsoft.Build.dll" />
<include name="Microsoft.Build.Engine.dll" />
<include name="Microsoft.Build.Framework.dll" />
<include name="Microsoft.Build.Tasks.v4.0.dll" />
<include name="Microsoft.Build.Utilities.v4.0.dll" />
<include name="Microsoft.CSharp.dll" />
<include name="Microsoft.Data.Entity.Build.Tasks.dll" />
<include name="Microsoft.JScript.dll" />
<include name="Microsoft.Transactions.Bridge.dll" />
<include name="Microsoft.Transactions.Bridge.Dtc.dll" />
<include name="Microsoft.VisualBasic.Activities.Compiler.dll" />
<include name="Microsoft.VisualBasic.Compatibility.Data.dll" />
<include name="Microsoft.VisualBasic.Compatibility.dll" />
<include name="Microsoft.VisualBasic.dll" />
<include name="Microsoft.VisualC.dll" />
<include name="Microsoft.VisualC.STLCLR.dll" />
<include name="mscorlib.dll" />
<include name="System.Activities.Core.Presentation.dll" />
<include name="System.Activities.dll" />
<include name="System.Activities.DurableInstancing.dll" />
<include name="System.Activities.Presentation.dll" />
<include name="System.AddIn.Contract" />
<include name="System.AddIn.dll" />
<include name="System.ComponentModel.Composition.dll" />
<include name="System.ComponentModel.DataAnnotations.dll" />
<include name="System.Configuration.dll" />
<include name="System.Configuration.Install.dll" />
<include name="System.Core.dll" />
<include name="System.Data.DataSetExtensions.dll" />
<include name="System.Data.dll" />
<include name="System.Data.Entity.Design.dll" />
<include name="System.Data.Entity.dll" />
<include name="System.Data.Linq.dll" />
<include name="System.Data.OracleClient.dll" />
<include name="System.Data.Services.Client.dll" />
<include name="System.Data.Services.Design.dll" />
<include name="System.Data.Services.dll" />
<include name="System.Data.SqlXml.dll" />
<include name="System.Deployment.dll" />
<include name="System.Design.dll" />
<include name="System.Device.dll" />
<include name="System.DirectoryServices.dll" />
<include name="System.DirectoryServices.Protocols.dll" />
<include name="System.dll" />
<include name="System.Drawing.Design.dll" />
<include name="System.Drawing.dll" />
<include name="System.Dynamic.dll" />
<include name="System.EnterpriseServices.dll" />
<include name="System.EnterpriseServices.Thunk.dll" />
<include name="System.EnterpriseServices.Wrapper.dll" />
<include name="System.IdentityModel.dll" />
<include name="System.IdentityModel.Selectors.dll" />
<include name="System.IO.Log.dll" />
<include name="System.Management.dll" />
<include name="System.Management.Instrumentation.dll" />
<include name="System.Messaging.dll" />
<include name="System.Net.dll" />
<include name="System.Numerics.dll" />
<include name="System.Runtime.Caching.dll" />
<include name="System.Runtime.DurableInstancing.dll" />
<include name="System.Runtime.Remoting.dll" />
<include name="System.Runtime.Serialization.dll" />
<include name="System.Runtime.Serialization.Formatters.Soap.dll" />
<include name="System.Security.dll" />
<include name="System.ServiceModel.Activation.dll" />
<include name="System.ServiceModel.Activities.dll" />
<include name="System.ServiceModel.Channels.dll" />
<include name="System.ServiceModel.Discovery.dll" />
<include name="System.ServiceModel.dll" />
<include name="System.ServiceModel.Routing.dll" />
<include name="System.ServiceModel.ServiceMoniker40.dll" />
<include name="System.ServiceModel.WasHosting.dll" />
<include name="System.ServiceModel.Web.dll" />
<include name="System.ServiceProcess.dll" />
<include name="System.Transactions.dll" />
<include name="System.Web.Abstractions.dll" />
<include name="System.Web.ApplicationServices.dll" />
<include name="System.Web.DataVisualization.Design.dll" />
<include name="System.Web.DataVisualization.dll" />
<include name="System.Web.dll" />
<include name="System.Web.DynamicData.Design.dll" />
<include name="System.Web.DynamicData.dll" />
<include name="System.Web.Entity.Design.dll" />
<include name="System.Web.Entity.dll" />
<include name="System.Web.Extensions.Design.dll" />
<include name="System.Web.Extensions.dll" />
<include name="System.Web.Mobile.dll" />
<include name="System.Web.RegularExpressions.dll" />
<include name="System.Web.Routing.dll" />
<include name="System.Web.Services.dll" />
<include name="System.Windows.Forms.DataVisualization.Design.dll" />
<include name="System.Windows.Forms.DataVisualization.dll" />
<include name="System.Windows.Forms.dll" />
<include name="System.Workflow.Activities.dll" />
<include name="System.Workflow.ComponentModel.dll" />
<include name="System.Workflow.Runtime.dll" />
<include name="System.WorkflowServices.dll" />
<include name="System.Xaml.dll" />
<include name="System.Xaml.Hosting.dll" />
<include name="System.Xml.dll" />
<include name="System.Xml.Linq.dll" />
</reference-assemblies>
<!-- WPF Assemblies -->
<reference-assemblies basedir="${path::combine(installRoot, 'v4.0.30319')}/WPF">
<include name="NaturalLanguage6.dll" />
<include name="NlsData0009.dll" />
<include name="NlsLexicons0009.dll" />
<include name="PenIMC.dll" />
<include name="PresentationCore.dll" />
<include name="PresentationFramework.Aero.dll" />
<include name="PresentationFramework.Classic.dll" />
<include name="PresentationFramework.dll" />
<include name="PresentationFramework.Luna.dll" />
<include name="PresentationFramework.Royale.dll" />
<include name="PresentationHost_v0400.dll" />
<include name="PresentationNative_v0400.dll" />
<include name="PresentationUI.dll" />
<include name="ReachFramework.dll" />
<include name="System.Printing.dll" />
<include name="System.Speech.dll" />
<include name="System.Windows.Input.Manipulations.dll" />
<include name="System.Windows.Presentation.dll" />
<include name="UIAutomationClient.dll" />
<include name="UIAutomationClientsideProviders.dll" />
<include name="UIAutomationProvider.dll" />
<include name="UIAutomationTypes.dll" />
<include name="WindowsBase.dll" />
<include name="WindowsFormsIntegration.dll" />
<include name="wpfgfx_v0400.dll" />
<include name="wpftxt_v0400.dll" />
</reference-assemblies>
<reference-assemblies basedir="${environment::get-folder-path('ProgramFiles')}/Reference Assemblies/Microsoft/Framework/.NETFramework/v4.5">
<include name="Microsoft.Build.Conversion.v4.0.dll" />
<include name="Microsoft.Build.dll" />
<include name="Microsoft.Build.Engine.dll" />
<include name="Microsoft.Build.Framework.dll" />
<include name="Microsoft.Build.Tasks.v4.0.dll" />
<include name="Microsoft.Build.Utilities.v4.0.dll" />
<include name="Microsoft.CSharp.dll" />
<include name="Microsoft.JScript.dll" />
<include name="Microsoft.VisualBasic.Compatibility.Data.dll" />
<include name="Microsoft.VisualBasic.Comptatibility.dll" />
<include name="Microsoft.VisualBasic.dll" />
<include name="Microsoft.VisualC.dll" />
<include name="Microsoft.VisualC.STLCLR.dll" />
<include name="mscorlib.dll" />
<include name="PresentationBuildTasks.dll" />
<include name="PresentationCore.dll" />
<include name="WindowsBase.dll" />
<include name="PresentationFramework.dll" />
<include name="PresentationFramework.Aero.dll" />
<include name="PresentationFramework.Classic.dll" />
<include name="PresentationFramework.Luna.dll" />
<include name="PresentationFramework.Royale.dll" />
<include name="ReachFramework.dll" />
<include name="System.Activities.Core.Presentation.dll" />
<include name="System.Activities.dll" />
<include name="System.Activities.DurableInstancing.dll" />
<include name="System.Activities.Presentation.dll" />
<include name="System.AddIn.Contract.dll" />
<include name="System.AddIn.dll" />
<include name="System.ComponentModel.Composition.dll" />
<include name="System.ComponentModel.DataAnnotations.dll" />
<include name="System.Configuration.dll" />
<include name="System.Core.dll" />
<include name="System.Data.DataSetExtension.dll" />
<include name="System.Data.dll" />
<include name="System.Data.Entity.Design.dll" />
<include name="System.Data.Entity.dll" />
<include name="System.Data.Linq.dll" />
<include name="System.Data.OracleClient.dll" />
<include name="System.Data.Services.Client.dll" />
<include name="System.Data.Services.Design.dll" />
<include name="System.Data.Services.dll" />
<include name="System.Data.SqlXml.dll" />
<include name="System.Deployment.dll" />
<include name="System.Design.dll" />
<include name="System.Device.dll" />
<include name="System.DirectoryServices.AccountManagement.dll" />
<include name="System.DirectoryServices.dll" />
<include name="System.DirectoryServices.Protocols.dll" />
<include name="System.dll" />
<include name="System.Drawing.Design.dll" />
<include name="System.Drawing.dll" />
<include name="System.EnterpriseServices.dll" />
<include name="System.EnterpriseServices.Thunk.dll" />
<include name="System.EnterpriseServices.Wrapper.dll" />
<include name="System.IdentityModel.dll" />
<include name="System.IdentityModel.Selectors.dll" />
<include name="System.IO.Log.dll" />
<include name="System.Management.dll" />
<include name="System.Management.Instrumentation.dll" />
<include name="System.Messaging.dll" />
<include name="System.Net.dll" />
<include name="System.Numerics.dll" />
<include name="System.Printing.dll" />
<include name="System.Runtime.Caching.dll" />
<include name="System.Runtime.DurableInstancing.dll" />
<include name="System.Runtime.Remoting.dll" />
<include name="System.Runtime.Serialization.dll" />
<include name="System.Runtime.Serialization.Formatters.Soap.dll" />
<include name="System.Security.dll" />
<include name="System.ServiceModel.Activation.dll" />
<include name="System.ServiceModel.Activities.dll" />
<include name="System.ServiceModel.Channels.dll" />
<include name="System.ServiceModel.Discovery.dll" />
<include name="System.ServiceModel.dll" />
<include name="System.ServiceModel.Routing.dll" />
<include name="System.ServiceModel.Web.dll" />
<include name="System.ServiceProcess.dll" />
<include name="System.Speech.dll" />
<include name="System.Transactions.dll" />
<include name="System.Web.Abstractions.dll" />
<include name="System.Web.ApplicationServices.dll" />
<include name="System.Web.DataVisualization.Design.dll" />
<include name="System.Web.DataVisualization.dll" />
<include name="System.Web.dll" />
<include name="System.Web.DynamicData.Design.dll" />
<include name="System.Web.DynamicData.dll" />
<include name="System.Web.Entity.Design.dll" />
<include name="System.Web.Entity.dll" />
<include name="System.Web.Extensions.Design.dll" />
<include name="System.Web.Extensions.dll" />
<include name="System.Web.Mobile.dll" />
<include name="System.Web.RegularExpressions.dll" />
<include name="System.Web.Routing.dll" />
<include name="System.Web.Services.dll" />
<include name="System.Windows.Forms.DataVisualization.Design.dll" />
<include name="System.Windows.Forms.DataVisualization.dll" />
<include name="System.Windows.Forms.dll" />
<include name="System.Windows.Input.Manipulations.dll" />
<include name="System.Windows.Presentation.dll" />
<include name="System.Workflow.Activities.dll" />
<include name="System.Workflow.ComponentModel.dll" />
<include name="System.Workflow.Runtime.dll" />
<include name="System.WorkflowServices.dll" />
<include name="System.Xaml.dll" />
<include name="System.Xml.dll" />
<include name="System.Xml.Linq.dll" />
</reference-assemblies>
<task-assemblies>
<!-- include MS.NET version-neutral assemblies -->
<include name="extensions/net/neutral/**/*.dll" />
<!-- include MS.NET 4.0 specific assemblies -->
<include name="extensions/net/4.0/**/*.dll" />
<!-- include MS.NET specific task assembly -->
<include name="NAnt.MSNetTasks.dll" />
<!-- include MS.NET specific test assembly -->
<include name="NAnt.MSNet.Tests.dll" />
<!-- include .NET 4.0 specific assemblies -->
<include name="extensions/common/4.0/**/*.dll" />
</task-assemblies>
<tool-paths>
<directory name="${sdkInstallRoot}"
if="${property::exists('sdkInstallRoot')}" />
<directory name="${path::combine(installRoot, 'v4.0.30319')}" />
</tool-paths>
<project>
<readregistry
property="installRoot"
key="SOFTWARE\Microsoft\.NETFramework\InstallRoot"
hive="LocalMachine" />
<locatesdk property="sdkInstallRoot" minwinsdkver="v7.0A" minnetfxver="4.0" maxnetfxver="4.0.99999" failonerror="false" />
</project>
<tasks>
<task name="csc">
<attribute name="supportsnowarnlist">true</attribute>
<attribute name="supportswarnaserrorlist">true</attribute>
<attribute name="supportskeycontainer">true</attribute>
<attribute name="supportskeyfile">true</attribute>
<attribute name="supportsdelaysign">true</attribute>
<attribute name="supportsplatform">true</attribute>
<attribute name="supportslangversion">true</attribute>
</task>
<task name="vbc">
<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="supportsdelaysign">true</attribute>
<attribute name="supportsplatform">true</attribute>
<attribute name="supportswarnaserrorlist">true</attribute>
</task>
<task name="jsc">
<attribute name="supportsplatform">true</attribute>
</task>
<task name="vjc">
<attribute name="supportsnowarnlist">true</attribute>
<attribute name="supportskeycontainer">true</attribute>
<attribute name="supportskeyfile">true</attribute>
<attribute name="supportsdelaysign">true</attribute>
</task>
<task name="resgen">
<attribute name="supportsassemblyreferences">true</attribute>
<attribute name="supportsexternalfilereferences">true</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>
</tasks>
</framework>
nAnt has released 0.92, so it's not dead. No idea though about when they'll get on csc 5.0.
Since you mentioned building Mono in it's native environment as your actual concern, the Mono Project has it's own msbuild clone, called xbuild (http://www.mono-project.com/Microsoft.Build). They say it's not 100% feature complete, but don't give nay details. I'm guessing, unless you're doing something way out there, it will probably work. I would recommend simply trying to invoke xbuild from the commandline and passing the solution as a first, quick smoke-test.
Regards, Michael
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With