Pages

Wednesday, April 30, 2014

Pedir previlégios de administrador a partir dum ficheiro bat

Normalmente quando crio scripts para automatizar algumas tarefas de build\deploy tenho sempre de avisar as pessoas parta não se esquecerem de correr com privilégios de administrador.

Para evitar problemas porque se esquecem ou porque eu me esqueço de avisar estive a procura e encontrei este script para fazer a verificação se esta a correr num contexto de administrador e caso não esteja lançar a janela de UAC (User Account Control) do windows.

 @echo off  
   
 :: BatchGotAdmin  
 :-------------------------------------  
 REM --> Check for permissions  
 >nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system"  
   
 REM --> If error flag set, we do not have admin.  
 if '%errorlevel%' NEQ '0' (  
   echo Requesting administrative privileges...  
   goto UACPrompt  
 ) else ( goto gotAdmin )  
   
 :UACPrompt  
   echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs"  
   set params = %*:"=""  
   echo UAC.ShellExecute "cmd.exe", "/c %~s0 %params%", "", "runas", 1 >> "%temp%\getadmin.vbs"  
   
   "%temp%\getadmin.vbs"  
   del "%temp%\getadmin.vbs"  
   exit /B  
   
 :gotAdmin  
   pushd "%CD%"  
   CD /D "%~dp0"  
 :--------------------------------------  
   
 <YOUR BATCH SCRIPT HERE>  

Assim mesmo que façam um duplo click e corram o script ele vai pedir privilégios de administrador! :)


FONTE: How to request Administrator access inside a batch file

Wednesday, April 23, 2014

Visual Studio 2013: 'Could not evaluate Expression' Debugger Abnormality

Nos últimos tempos tenho usado o VS2013 para fazer debug de aplicações em WebForms\MVC e reparei que algures no meio parece que perdi a capacidade de ver o valor das variáveis na janela de watch.

Na janela de watch as variáveis aparecem-me sempre com o valor "Could not evaluate Expression" o que torna todo o debug um bocado complicado ...


Depois de algumas pesquisas encontrei a solução, basta ir a Tools -> Options -> Debugging -> General e activar a opção "Use Managed Compatibility Mode"


E pronto, já tenho os valores das variáveis na janela de watch :)


Fonte: Visual Studio 2013 'Could not evaluate Expression' Debugger Abnormality

Wednesday, April 16, 2014

Visual Studio 2013 Erro: "no exports were found that match the constraint contract name"

Recentemente depois de fazer umas poucas actualizações a extensões e tudo mais no meu Visual Studio 2013 comecei a ter este erro sempre que abria um ficheiro:


Depois de fazer umas poucas pesquisas descobri que o culpado seria a cache do VS2013 e que precisava de a limpar, para tal basta fechar todas as instâncias do VS2013 e apagar a pasta:

%AppData%\..\Local\Microsoft\VisualStudio\12.0\ComponentModelCache
Ou
%UserProfile%\AppData\Local\Microsoft\VisualStudio\12.0\ComponentModelCache

E quando volto a abrir o VS2013 já não tenho o erro :)

Fonte: no exports were found that match the constraint contract name

Wednesday, April 9, 2014

Múltiplas instâncias do mesmo serviço windows

Normalmente para instalar/desinstalar serviços windows uso a ferramenta InstallUtil, mas surgiu a necessidade de ter o mesmo serviço instalado múltiplas vezes na mesma maquina (um para DEV e outro para STAGING)

Se para usar o InstallUtil teria de ter dois serviços para terem nomes distintos e poderem residir na mesma maquina, o que não me faz sentido ... por isso pesquisei e encontrei outra ferramenta que faz exactamente o que preciso e muito mais :)

A aplicação Sc.exe permite fazer tudo o que podemos fazer pela aplicação "Serviços" do painel de controlo mas através da linha de comandos.

Para criar duas instancias do mesmo serviço podemos fazer:
   sc.exe create Servico.De.Exemplo.Dev   
     binPath= "caminho.completo.para.o.serviço.de.dev"   
     DisplayName= "Servico De Exemplo Dev"   
     start= auto  
     obj= "utilizador@dominio"  
     password= "password do utilizador"  
   
   sc.exe create Servico.De.Exemplo.Staging   
     binPath= "caminho.completo.para.o.serviço.de.staging"   
     DisplayName= "Servico De Exemplo Staging"  
     start= auto  
     obj= "utilizador@dominio"  
     password= "password do utilizador"  

Desta forma criamos os serviços "Servico.De.Exemplo.Dev" e "Servico.De.Exemplo.Staging" com arranque automático e que correm com a conta de utilizador "utilizador@dominio"

Esta aplicação também permite que controlemos os serviços, podemos iniciar ou parar os serviços:
   sc.exe start Servico.De.Exemplo.Dev  
   sc.exe stop Servico.De.Exemplo.Dev  

NOTA 1: Não esquecer de deixar um espaço sempre a seguir ao "=" senão ele não interpreta bem a opção e não corre o comando.

NOTA 2: Esta aplicação permite ter como alvo um servidor remoto, para isso basta indicar o nome antes da acção "sc.exe \\remote.server create ..."


Fonte: Installing multiple instances of the same windows service on a server

Wednesday, April 2, 2014

Nant target .net framework 4.5

Uma das regras basilares de boas praticas num projecto é ter o processo de build/deploy automatizado (pelo menos para mim), assim evitar erros humanos e dar alguma segurança quando delegamos estas tarefas a pessoas que ainda não estão (e assim conservarmos o nosso tempo para as nossas tarefas)

No projecto em que estou usa-se NAnt como ferramenta de build, a meu ver é uma ferramenta robusta e facilmente extensível através de scripts para fazer o que não nos dá out-of-the-box.

No entanto a versão actual ainda não suporta a framework .net 4.5, para isso é preciso adicionar ao ficheiro de configuração a especificação da framework com a localização das assemblies dessa versão e do compilador.


Para facilitar o trabalho, fica aqui o ficheiro completo de configuração para o NAnt v0.92. Basta substituir o ficheiro de configuração original pelo que tenho aqui e passamos a ter a framework 4.5 disponível!

<?xml version="1.0"?>
<!--
Building .NET 4.5 Projects with Nant:
http://stackoverflow.com/questions/11837795/building-net-4-5-projects-with-nant/11840925#11840925
-->
<configuration>
  <!-- Leave this alone. Sets up configsectionhandler section -->
  <configSections>
    <section name="nant" type="NAnt.Core.ConfigurationSection, NAnt.Core" />
    <section name="log4net" type="System.Configuration.IgnoreSectionHandler" />
  </configSections>
  <appSettings>
    <!-- Used to indicate the location of the cache folder for shadow files -->
    <add key="shadowfiles.path" value="%temp%\nunit20\ShadowCopyCache" />
    <!-- Used to indicate that NAnt should shadow copy files in a cache folder near the executable -->
    <add key="nant.shadowfiles" value="False" />
    <!-- Used to indicate if cached files should be deleted when done running-->
    <add key="nant.shadowfiles.cleanup" value="False" />
    <!-- To enable internal log4net logging, uncomment the next line -->
    <!-- <add key="log4net.Internal.Debug" value="true"/> -->
  </appSettings>
  <!-- nant config settings -->
  <nant>
    <frameworks>
      <platform name="win32" default="auto">
        <task-assemblies>
          <!-- include NAnt task assemblies -->
          <include name="*Tasks.dll" />
          <!-- include NAnt test assemblies -->
          <include name="*Tests.dll" />
          <!-- include framework-neutral assemblies -->
          <include name="extensions/common/neutral/**/*.dll" />
          <!-- exclude Microsoft.NET specific task assembly -->
          <exclude name="NAnt.MSNetTasks.dll" />
          <!-- exclude Microsoft.NET specific test assembly -->
          <exclude name="NAnt.MSNet.Tests.dll" />
        </task-assemblies>
        <framework
            name="net-1.0"
            family="net"
            version="1.0"
            description="Microsoft .NET Framework 1.0"
            sdkdirectory="${path::combine(sdkInstallRoot, 'bin')}"
            frameworkdirectory="${path::combine(installRoot, 'v1.0.3705')}"
            frameworkassemblydirectory="${path::combine(installRoot, 'v1.0.3705')}"
            clrversion="1.0.3705"
            clrtype="Desktop"
            vendor="Microsoft"
                    >
          <runtime>
            <probing-paths>
              <directory name="lib/net/1.0" />
              <directory name="lib/net/neutral" />
              <directory name="lib/common/1.0" />
              <directory name="lib/common/neutral" />
            </probing-paths>
            <modes>
              <strict>
                <environment>
                  <variable name="COMPLUS_VERSION" value="v1.0.3705" />
                </environment>
              </strict>
            </modes>
          </runtime>
          <reference-assemblies basedir="${path::combine(installRoot, 'v1.0.3705')}">
            <include name="Accessibility.dll" />
            <include name="cscompmgd.dll" />
            <include name="mscorlib.dll" />
            <include name="Microsoft.Vsa.dll" />
            <include name="Microsoft.VisualBasic.dll" />
            <include name="System.Configuration.Install.dll" />
            <include name="System.Data.dll" />
            <include name="System.Design.dll" />
            <include name="System.DirectoryServices.dll" />
            <include name="System.dll" />
            <include name="System.Drawing.Design.dll" />
            <include name="System.Drawing.dll" />
            <include name="System.EnterpriseServices.dll" />
            <include name="System.Management.dll" />
            <include name="System.Messaging.dll" />
            <include name="System.Runtime.Remoting.dll" />
            <include name="System.Runtime.Serialization.Formatters.Soap.dll" />
            <include name="System.Security.dll" />
            <include name="System.ServiceProcess.dll" />
            <include name="System.Web.dll" />
            <include name="System.Web.RegularExpressions.dll" />
            <include name="System.Web.Services.dll" />
            <include name="System.Windows.Forms.dll" />
            <include name="System.XML.dll" />
          </reference-assemblies>
          <task-assemblies>
            <!-- include MS.NET version-neutral assemblies -->
            <include name="extensions/net/neutral/**/*.dll" />
            <!-- include MS.NET 1.0 specific assemblies -->
            <include name="extensions/net/1.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" />
            <!-- include .NET 1.0 specific assemblies -->
            <include name="extensions/common/1.0/**/*.dll" />
          </task-assemblies>
          <tool-paths>
            <directory name="${path::combine(sdkInstallRoot, 'bin')}"
                if="${property::exists('sdkInstallRoot')}" />
            <directory name="${path::combine(installRoot, 'v1.0.3705')}" />
          </tool-paths>
          <project>
            <readregistry
                property="installRoot"
                key="SOFTWARE\Microsoft\.NETFramework\InstallRoot"
                hive="LocalMachine" />
            <readregistry
                property="sdkInstallRoot"
                key="SOFTWARE\Microsoft\.NETFramework\sdkInstallRoot"
                hive="LocalMachine"
                failonerror="false" />
          </project>
          <tasks>
            <task name="csc">
              <attribute name="supportsnowarnlist">true</attribute>
            </task>
            <task name="vjc">
              <attribute name="supportsnowarnlist">true</attribute>
            </task>
            <task name="delay-sign">
              <attribute name="exename">sn</attribute>
            </task>
            <task name="license">
              <attribute name="exename">lc</attribute>
            </task>
            <task name="aximp">
              <attribute name="supportsrcw">false</attribute>
            </task>
            <task name="tlbimp">
              <attribute name="supportstransform">false</attribute>
            </task>
          </tasks>
        </framework>
        <framework
            name="net-1.1"
            family="net"
            version="1.1"
            description="Microsoft .NET Framework 1.1"
            sdkdirectory="${path::combine(sdkInstallRoot, 'bin')}"
            frameworkdirectory="${path::combine(installRoot, 'v1.1.4322')}"
            frameworkassemblydirectory="${path::combine(installRoot, 'v1.1.4322')}"
            clrversion="1.1.4322"
            clrtype="Desktop"
            vendor="Microsoft"
                    >
          <runtime>
            <probing-paths>
              <directory name="lib/net/1.1" />
              <directory name="lib/net/neutral" />
              <directory name="lib/common/1.1" />
              <directory name="lib/common/neutral" />
            </probing-paths>
            <modes>
              <strict>
                <environment>
                  <variable name="COMPLUS_VERSION" value="v1.1.4322" />
                </environment>
              </strict>
            </modes>
          </runtime>
          <reference-assemblies basedir="${path::combine(installRoot, 'v1.1.4322')}">
            <include name="Accessibility.dll" />
            <include name="cscompmgd.dll" />
            <include name="mscorlib.dll" />
            <include name="Microsoft.Vsa.dll" />
            <include name="Microsoft.VisualBasic.dll" />
            <include name="Microsoft.VisualBasic.Compatibility.dll" />
            <include name="Microsoft.VisualBasic.Compatibility.Data.dll" />
            <include name="System.Configuration.Install.dll" />
            <include name="System.Data.dll" />
            <include name="System.Data.OracleClient.dll" />
            <include name="System.Design.dll" />
            <include name="System.DirectoryServices.dll" />
            <include name="System.dll" />
            <include name="System.Drawing.Design.dll" />
            <include name="System.Drawing.dll" />
            <include name="System.EnterpriseServices.dll" />
            <include name="System.Management.dll" />
            <include name="System.Messaging.dll" />
            <include name="System.Runtime.Remoting.dll" />
            <include name="System.Runtime.Serialization.Formatters.Soap.dll" />
            <include name="System.Security.dll" />
            <include name="System.ServiceProcess.dll" />
            <include name="System.Web.dll" />
            <include name="System.Web.Mobile.dll" />
            <include name="System.Web.RegularExpressions.dll" />
            <include name="System.Web.Services.dll" />
            <include name="System.Windows.Forms.dll" />
            <include name="System.XML.dll" />
          </reference-assemblies>
          <task-assemblies>
            <!-- include MS.NET version-neutral assemblies -->
            <include name="extensions/net/neutral/**/*.dll" />
            <!-- include MS.NET 1.1 specific assemblies -->
            <include name="extensions/net/1.1/**/*.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 1.1 specific assemblies -->
            <include name="extensions/common/1.1/**/*.dll" />
          </task-assemblies>
          <tool-paths>
            <directory name="${path::combine(sdkInstallRoot, 'bin')}"
                if="${property::exists('sdkInstallRoot')}" />
            <directory name="${path::combine(installRoot, 'v1.1.4322')}" />
          </tool-paths>
          <project>
            <readregistry
                property="installRoot"
                key="SOFTWARE\Microsoft\.NETFramework\InstallRoot"
                hive="LocalMachine" />
            <readregistry
                property="sdkInstallRoot"
                key="SOFTWARE\Microsoft\.NETFramework\sdkInstallRootv1.1"
                hive="LocalMachine"
                failonerror="false" />
          </project>
          <tasks>
            <task name="csc">
              <attribute name="supportsnowarnlist">true</attribute>
            </task>
            <task name="vjc">
              <attribute name="supportsnowarnlist">true</attribute>
            </task>
            <task name="delay-sign">
              <attribute name="exename">sn</attribute>
            </task>
            <task name="license">
              <attribute name="exename">lc</attribute>
            </task>
          </tasks>
        </framework>
        <framework
            name="net-2.0"
            family="net"
            version="2.0"
            description="Microsoft .NET Framework 2.0"
            sdkdirectory="${path::combine(sdkInstallRoot, 'bin')}"
            frameworkdirectory="${path::combine(installRoot, 'v2.0.50727')}"
            frameworkassemblydirectory="${path::combine(installRoot, 'v2.0.50727')}"
            clrversion="2.0.50727"
            clrtype="Desktop"
            vendor="Microsoft"
                    >
          <runtime>
            <probing-paths>
              <directory name="lib/net/2.0" />
              <directory name="lib/net/neutral" />
              <directory name="lib/common/2.0" />
              <directory name="lib/common/neutral" />
            </probing-paths>
            <modes>
              <strict>
                <environment>
                  <variable name="COMPLUS_VERSION" value="v2.0.50727" />
                </environment>
              </strict>
            </modes>
          </runtime>
          <reference-assemblies basedir="${path::combine(installRoot, 'v2.0.50727')}">
            <include name="Accessibility.dll" />
            <include name="cscompmgd.dll" />
            <include name="mscorlib.dll" />
            <include name="Microsoft.Build.Engine.dll" />
            <include name="Microsoft.Build.Framework.dll" />
            <include name="Microsoft.Build.Utilities.dll" />
            <include name="Microsoft.Vsa.dll" />
            <include name="Microsoft.VisualBasic.dll" />
            <include name="Microsoft.VisualBasic.Compatibility.dll" />
            <include name="Microsoft.VisualBasic.Compatibility.Data.dll" />
            <include name="System.Configuration.dll" />
            <include name="System.Configuration.Install.dll" />
            <include name="System.Data.dll" />
            <include name="System.Data.OracleClient.dll" />
            <include name="System.Data.SqlXml.dll" />
            <include name="System.Deployment.dll" />
            <include name="System.Design.dll" />
            <include name="System.DirectoryServices.dll" />
            <include name="System.dll" />
            <include name="System.Drawing.Design.dll" />
            <include name="System.Drawing.dll" />
            <include name="System.EnterpriseServices.dll" />
            <include name="System.Management.dll" />
            <include name="System.Messaging.dll" />
            <include name="System.Runtime.Remoting.dll" />
            <include name="System.Runtime.Serialization.Formatters.Soap.dll" />
            <include name="System.Security.dll" />
            <include name="System.ServiceProcess.dll" />
            <include name="System.Transactions.dll" />
            <include name="System.Web.dll" />
            <include name="System.Web.Mobile.dll" />
            <include name="System.Web.RegularExpressions.dll" />
            <include name="System.Web.Services.dll" />
            <include name="System.Windows.Forms.dll" />
            <include name="System.XML.dll" />
          </reference-assemblies>
          <task-assemblies>
            <!-- include MS.NET version-neutral assemblies -->
            <include name="extensions/net/neutral/**/*.dll" />
            <!-- include MS.NET 2.0 specific assemblies -->
            <include name="extensions/net/2.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 2.0 specific assemblies -->
            <include name="extensions/common/2.0/**/*.dll" />
          </task-assemblies>
          <tool-paths>
            <directory name="${path::combine(sdkInstallRoot, 'bin')}"
                if="${property::exists('sdkInstallRoot')}" />
            <directory name="${path::combine(installRoot, 'v2.0.50727')}" />
          </tool-paths>
          <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="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>
        <framework
            name="net-3.5"
            family="net"
            version="3.5"
            description="Microsoft .NET Framework 3.5"
            sdkdirectory="${sdkInstallRoot}"
            frameworkdirectory="${path::combine(installRoot, 'v3.5')}"
            frameworkassemblydirectory="${path::combine(installRoot, 'v2.0.50727')}"
            clrversion="2.0.50727"
            clrtype="Desktop"
            vendor="Microsoft"
                    >
          <runtime>
            <probing-paths>
              <directory name="lib/net/2.0" />
              <directory name="lib/net/neutral" />
              <directory name="lib/common/2.0" />
              <directory name="lib/common/neutral" />
            </probing-paths>
            <modes>
              <strict>
                <environment>
                  <variable name="COMPLUS_VERSION" value="v2.0.50727" />
                </environment>
              </strict>
            </modes>
          </runtime>
          <reference-assemblies basedir="${path::combine(installRoot, 'v2.0.50727')}">
            <include name="Accessibility.dll" />
            <include name="cscompmgd.dll" />
            <include name="mscorlib.dll" />
            <include name="Microsoft.Build.Utilities.dll" />
            <include name="Microsoft.Vsa.dll" />
            <include name="Microsoft.VisualBasic.dll" />
            <include name="Microsoft.VisualBasic.Compatibility.dll" />
            <include name="Microsoft.VisualBasic.Compatibility.Data.dll" />
            <include name="System.Configuration.dll" />
            <include name="System.Configuration.Install.dll" />
            <include name="System.Data.dll" />
            <include name="System.Data.OracleClient.dll" />
            <include name="System.Data.SqlXml.dll" />
            <include name="System.Deployment.dll" />
            <include name="System.Design.dll" />
            <include name="System.DirectoryServices.dll" />
            <include name="System.dll" />
            <include name="System.Drawing.Design.dll" />
            <include name="System.Drawing.dll" />
            <include name="System.EnterpriseServices.dll" />
            <include name="System.Management.dll" />
            <include name="System.Messaging.dll" />
            <include name="System.Runtime.Remoting.dll" />
            <include name="System.Runtime.Serialization.Formatters.Soap.dll" />
            <include name="System.Security.dll" />
            <include name="System.ServiceProcess.dll" />
            <include name="System.Transactions.dll" />
            <include name="System.Web.dll" />
            <include name="System.Web.Mobile.dll" />
            <include name="System.Web.RegularExpressions.dll" />
            <include name="System.Web.Services.dll" />
            <include name="System.Windows.Forms.dll" />
            <include name="System.XML.dll" />
          </reference-assemblies>
          <reference-assemblies basedir="${environment::get-folder-path('ProgramFiles')}/Reference Assemblies/Microsoft/Framework/v3.5">
            <include name="Microsoft.Build.Engine.dll" />
            <include name="Microsoft.Build.Framework.dll" />
            <include name="System.AddIn.Contract.dll" />
            <include name="System.AddIn.dll" />
            <include name="System.ComponentModel.DataAnnotations.dll" />
            <include name="System.Core.dll" />
            <include name="System.Data.DataSetExtensions.dll" />
            <include name="System.Data.Entity.Design.dll" />
            <include name="System.Data.Entity.dll" />
            <include name="System.Data.Linq.dll" />
            <include name="System.Data.Services.Client.dll" />
            <include name="System.Data.Services.Design.dll" />
            <include name="System.Data.Services.dll" />
            <include name="System.DirectoryServices.AccountManagement.dll" />
            <include name="System.Management.Instrumentation.dll" />
            <include name="System.Net.dll" />
            <include name="System.ServiceModel.Web.dll" />
            <include name="System.Web.Abstractions.dll" />
            <include name="System.Web.DynamicData.Design.dll" />
            <include name="System.Web.DynamicData.dll" />
            <include name="System.Web.Entitly.Design.dll" />
            <include name="System.Web.Entitly.dll" />
            <include name="System.Web.Extensions.Design.dll" />
            <include name="System.Web.Extensions.dll" />
            <include name="System.Web.Routing.dll" />
            <include name="System.Windows.Presentation.dll" />
            <include name="System.WorkflowServices.dll" />
            <include name="System.Xml.Linq.dll" />
          </reference-assemblies>
          <reference-assemblies basedir="${environment::get-folder-path('ProgramFiles')}/Reference Assemblies/Microsoft/Framework/v3.0">
            <include name="PresentationBuildTasks.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="ReachFramework.dll" />
            <include name="System.IdentityModel.dll" />
            <include name="System.IdentityModel.Selectors.dll" />
            <include name="System.IO.Log.dll" />
            <include name="System.Printing.dll" />
            <include name="System.Runtime.Serialization.dll" />
            <include name="System.ServiceModel.dll" />
            <include name="System.Speech.dll" />
            <include name="System.Workflow.Activities.dll" />
            <include name="System.Workflow.ComponentModel.dll" />
            <include name="System.Workflow.Runtime.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" />
          </reference-assemblies>
          <task-assemblies>
            <!-- include MS.NET version-neutral assemblies -->
            <include name="extensions/net/neutral/**/*.dll" />
            <!-- include MS.NET 2.0 specific assemblies -->
            <include name="extensions/net/2.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 2.0 specific assemblies -->
            <include name="extensions/common/2.0/**/*.dll" />
          </task-assemblies>
          <tool-paths>
            <directory name="${sdkInstallRoot}"
                if="${property::exists('sdkInstallRoot')}" />
            <directory name="${path::combine(installRoot, 'v3.5')}" />
            <directory name="${path::combine(installRoot, 'v2.0.50727')}" />
          </tool-paths>
          <project>
            <readregistry
                property="installRoot"
                key="SOFTWARE\Microsoft\.NETFramework\InstallRoot"
                hive="LocalMachine" />
            <locatesdk property="sdkInstallRoot" minwinsdkver="v6.0A" maxnetfxver="3.5" 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>
        <framework
            name="net-4.0"
            family="net"
            version="4.0"
            description="Microsoft .NET Framework 4.0"
            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.0">
            <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>
        <framework
            name="netcf-1.0"
            family="netcf"
            version="1.0"
            description="Microsoft .NET Compact Framework 1.0"
            sdkdirectory="${path::combine(sdkInstallRoot, 'v1.0.5000\bin')}"
            frameworkdirectory="${path::combine(installRoot, 'v1.1.4322')}"
            frameworkassemblydirectory="${path::combine(sdkInstallRoot, 'v1.0.5000\Windows CE')}"
            clrversion="1.1.4322"
            clrtype="Compact"
            vendor="Microsoft"
                    >
          <runtime>
            <modes>
              <strict>
                <environment>
                  <variable name="COMPLUS_VERSION" value="v1.1.4322" />
                </environment>
              </strict>
            </modes>
          </runtime>
          <reference-assemblies basedir="${path::combine(sdkInstallRoot, 'v1.0.5000\Windows CE')}">
            <include name="*.dll" />
          </reference-assemblies>
          <task-assemblies>
            <!-- this is not a supported runtime framework -->
          </task-assemblies>
          <tool-paths>
            <directory name="${path::combine(sdkInstallRoot, 'v1.0.5000\bin')}" />
            <directory name="${path::combine(installRoot, 'v1.1.4322')}" />
            <directory name="${path::combine(sdkInstallRoot.DesktopFramework, 'bin')}" />
          </tool-paths>
          <project>
            <readregistry
                property="installRoot"
                key="SOFTWARE\Microsoft\.NETFramework\InstallRoot"
                hive="LocalMachine" />
            <readregistry
                property="sdkInstallRoot"
                key="SOFTWARE\Microsoft\.NETCompactFramework\sdkInstallRoot"
                hive="LocalMachine" />
            <readregistry
                property="sdkInstallRoot.DesktopFramework"
                key="SOFTWARE\Microsoft\.NETFramework\sdkInstallRootv1.1"
                hive="LocalMachine" />
            <fail if="${not directory::exists(sdkInstallRoot.DesktopFramework)}">The .NET Framework 1.1 SDK is not installed.</fail>
          </project>
          <tasks>
            <task name="csc">
              <attribute name="noconfig">true</attribute>
              <attribute name="nostdlib">true</attribute>
              <attribute name="supportsnowarnlist">true</attribute>
            </task>
            <task name="resgen">
              <attribute name="exename">cfresgen</attribute>
            </task>
            <task name="delay-sign">
              <attribute name="exename">sn</attribute>
            </task>
            <task name="license">
              <attribute name="exename">lc</attribute>
            </task>
          </tasks>
        </framework>
        <framework
            name="netcf-2.0"
            family="netcf"
            version="2.0"
            description="Microsoft .NET Compact Framework 2.0"
            sdkdirectory="${path::combine(sdkInstallRoot.DesktopFramework, 'bin')}"
            frameworkdirectory="${path::combine(installRoot, 'v2.0.50727')}"
            frameworkassemblydirectory="${path::combine(sdkInstallRoot, 'WindowsCE')}"
            clrversion="2.0.0"
            clrtype="Compact"
            vendor="Microsoft"
                    >
          <runtime>
            <modes>
              <strict>
                <environment>
                  <variable name="COMPLUS_VERSION" value="v2.0.50727" />
                </environment>
              </strict>
            </modes>
          </runtime>
          <reference-assemblies basedir="${path::combine(sdkInstallRoot, 'WindowsCE')}">
            <include name="*.dll" />
          </reference-assemblies>
          <task-assemblies>
            <!-- this is not a supported runtime framework -->
          </task-assemblies>
          <tool-paths>
            <directory name="${path::combine(sdkInstallRoot.DesktopFramework, 'bin')}" />
          </tool-paths>
          <project>
            <readregistry
                property="installRoot"
                key="SOFTWARE\Microsoft\.NETFramework\InstallRoot"
                hive="LocalMachine" />
            <readregistry
                property="sdkInstallRoot"
                key="SOFTWARE\Microsoft\.NETCompactFramework\v2.0.0.0\InstallRoot\"
                hive="LocalMachine" />
            <readregistry
                property="sdkInstallRoot.DesktopFramework"
                key="SOFTWARE\Microsoft\.NETFramework\sdkInstallRootv2.0"
                hive="LocalMachine" />
            <fail if="${not directory::exists(sdkInstallRoot.DesktopFramework)}">The .NET Framework 2.0 SDK is not installed.</fail>
          </project>
          <tasks>
            <task name="csc">
              <attribute name="noconfig">true</attribute>
              <attribute name="nostdlib">true</attribute>
              <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="nostdlib">true</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="supportsdelaysign">true</attribute>
              <attribute name="supportsplatform">true</attribute>
              <attribute name="supportswarnaserrorlist">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>
        <framework
            name="silverlight-2.0"
            family="silverlight"
            version="2.0"
            description="Microsoft Silverlight 2.0"
            sdkdirectory="${path::combine(sdkInstallRoot, 'bin')}"
            frameworkdirectory="${path::combine(installRoot, 'v3.5')}"
            frameworkassemblydirectory="${SL2RefAssemblyBaseDir}"
            clrversion="2.0.50727"
            clrtype="Browser"
            vendor="Microsoft"
                    >
          <runtime>
            <modes>
              <strict>
                <environment>
                  <variable name="COMPLUS_VERSION" value="v2.0.50727" />
                </environment>
              </strict>
            </modes>
          </runtime>
          <reference-assemblies basedir="${SL2RefAssemblyBaseDir}">
            <include name="Microsoft.VisualBasic.dll" />
            <include name="mscorlib.dll" />
            <include name="System.Core.dll" />
            <include name="System.dll" />
            <include name="System.Net.dll" />
            <include name="System.Runtime.Serialization.dll" />
            <include name="System.ServiceModel.dll" />
            <include name="System.ServiceModel.Web.dll" />
            <include name="System.Windows.Browser.dll" />
            <include name="System.Windows.dll" />
            <include name="System.Xml.dll" />
          </reference-assemblies>
          <task-assemblies>
            <!-- include MS.NET version-neutral assemblies -->
            <include name="extensions/net/neutral/**/*.dll" />
            <!-- include MS.NET 2.0 specific assemblies -->
            <include name="extensions/net/2.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 2.0 specific assemblies -->
            <include name="extensions/common/2.0/**/*.dll" />
          </task-assemblies>
          <tool-paths>
            <directory name="${SL2RefAssemblyBaseDir}" />
            <directory name="${path::combine(sdkInstallRoot, 'bin')}"
                if="${property::exists('sdkInstallRoot')}" />
            <directory name="${path::combine(installRoot, 'v3.5')}" />
            <directory name="${path::combine(installRoot, 'v2.0.50727')}" />
          </tool-paths>
          <project>
            <readregistry property="SL2RefAssemblyBaseDir"
                key="SOFTWARE\Microsoft\Microsoft SDKs\Silverlight\v2.0\ReferenceAssemblies\SLRuntimeInstallPath"
                hive="LocalMachine" />
            <readregistry
                property="installRoot"
                key="SOFTWARE\Microsoft\.NETFramework\InstallRoot"
                hive="LocalMachine" />
            <locatesdk property="sdkInstallRoot" minwinsdkver="v6.0A" maxnetfxver="3.5" failonerror="false" />
          </project>
          <tasks>
            <task name="csc">
              <attribute name="noconfig">true</attribute>
              <attribute name="nostdlib">true</attribute>
              <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="nostdlib">true</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="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>
        <framework
            name="silverlight-3.0"
            family="silverlight"
            version="3.0"
            description="Microsoft Silverlight 3.0"
            sdkdirectory="${path::combine(sdkInstallRoot, 'bin')}"
            frameworkdirectory="${path::combine(installRoot, 'v3.5')}"
            frameworkassemblydirectory="${SL3RefAssemblyBaseDir}"
            clrversion="2.0.50727"
            clrtype="Browser"
            vendor="Microsoft"
                    >
          <runtime>
            <modes>
              <strict>
                <environment>
                  <variable name="COMPLUS_VERSION" value="v2.0.50727" />
                </environment>
              </strict>
            </modes>
          </runtime>
          <reference-assemblies basedir="${SL3RefAssemblyBaseDir}">
            <include name="Microsoft.VisualBasic.dll" />
            <include name="mscorlib.dll" />
            <include name="System.Core.dll" />
            <include name="System.dll" />
            <include name="System.Xml.dll" />
            <include name="System.Windows.dll" />
            <include name="System.Windows.Browser.dll" />
            <!-- Remaining libraries found in the Reference Assembly directory -->
            <include name="agcore.debug.dll" />
            <include name="agcore.dll" />
            <include name="coreclr.dll" />
            <include name="mscorrc.debug.dll" />
            <include name="mscorrc.dll" />
            <include name="npctrl.dll" />
            <include name="npctrlui.dll" />
            <include name="Silverlight.ConfigurationUI.dll" />
            <include name="System.Net.dll" />
            <include name="System.Runtime.Serialization.dll" />
            <include name="System.ServiceModel.dll" />
            <include name="System.ServiceModel.Web.dll" />
          </reference-assemblies>
          <task-assemblies>
            <!-- include MS.NET version-neutral assemblies -->
            <include name="extensions/net/neutral/**/*.dll" />
            <!-- include MS.NET 2.0 specific assemblies -->
            <include name="extensions/net/2.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 2.0 specific assemblies -->
            <include name="extensions/common/2.0/**/*.dll" />
          </task-assemblies>
          <tool-paths>
            <directory name="${SL3RefAssemblyBaseDir}" />
            <directory name="${path::combine(sdkInstallRoot, 'bin')}"
                if="${property::exists('sdkInstallRoot')}" />
            <directory name="${path::combine(installRoot, 'v3.5')}" />
          </tool-paths>
          <project>
            <readregistry property="SL3RefAssemblyBaseDir"
                key="SOFTWARE\Microsoft\Microsoft SDKs\Silverlight\v3.0\ReferenceAssemblies\SLRuntimeInstallPath"
                hive="LocalMachine" />
            <readregistry
                property="installRoot"
                key="SOFTWARE\Microsoft\.NETFramework\InstallRoot"
                hive="LocalMachine" />
            <locatesdk property="sdkInstallRoot" minwinsdkver="v6.0A" maxnetfxver="3.5" failonerror="false" />
          </project>
          <tasks>
            <task name="csc">
              <attribute name="noconfig">true</attribute>
              <attribute name="nostdlib">true</attribute>
              <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="nostdlib">true</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="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>
        <framework
            name="silverlight-4.0"
            family="silverlight"
            version="4.0"
            description="Microsoft Silverlight 4.0"
            sdkdirectory="${path::combine(sdkInstallRoot, 'bin')}"
            frameworkdirectory="${path::combine(installRoot, 'v4.0.30319')}"
            frameworkassemblydirectory="${SL4RefAssemblyBaseDir}"
            clrversion="4.0.30319"
            clrtype="Browser"
            vendor="Microsoft"
                    >
          <runtime>
            <modes>
              <strict>
                <environment>
                  <variable name="COMPLUS_VERSION" value="v4.0.30319" />
                </environment>
              </strict>
            </modes>
          </runtime>
          <reference-assemblies basedir="${SL4RefAssemblyBaseDir}">
            <include name="Microsoft.VisualBasic.dll" />
            <include name="mscorlib.dll" />
            <include name="System.Core.dll" />
            <include name="system.dll" />
            <include name="System.Xml.dll" />
            <include name="System.Windows.dll" />
            <include name="System.Windows.Browser.dll" />
            <!-- Remaining libraries found in the Reference Assembly directory -->
            <include name="agcore.debug.dll" />
            <include name="agcore.dll" />
            <include name="coreclr.dll" />
            <include name="mscorrc.debug.dll" />
            <include name="mscorrc.dll" />
            <include name="npctrl.dll" />
            <include name="npctrlui.dll" />
            <include name="System.Net.dll" />
            <include name="System.Runtime.Serialization.dll" />
            <include name="System.ServiceModel.dll" />
            <include name="System.ServiceModel.Web.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="${SL4RefAssemblyBaseDir}" />
            <directory name="${path::combine(sdkInstallRoot, 'bin')}"
                if="${property::exists('sdkInstallRoot')}" />
            <directory name="${path::combine(installRoot, 'v4.0.30319')}" />
          </tool-paths>
          <project>
            <readregistry property="SL4RefAssemblyBaseDir"
                key="SOFTWARE\Microsoft\Microsoft SDKs\Silverlight\v4.0\ReferenceAssemblies\SLRuntimeInstallPath"
                hive="LocalMachine" />
            <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="noconfig">true</attribute>
              <attribute name="nostdlib">true</attribute>
              <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="nostdlib">true</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="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>
        <framework
            name="silverlight-5.0"
            family="silverlight"
            version="5.0"
            description="Microsoft Silverlight 5.0"
            sdkdirectory="${path::combine(sdkInstallRoot, 'bin')}"
            frameworkdirectory="${path::combine(installRoot, 'v4.0.30319')}"
            frameworkassemblydirectory="${SL5RefAssemblyBaseDir}"
            clrversion="4.0.30319"
            clrtype="Browser"
            vendor="Microsoft"
                    >
          <runtime>
            <modes>
              <strict>
                <environment>
                  <variable name="COMPLUS_VERSION" value="v4.0.30319" />
                </environment>
              </strict>
            </modes>
          </runtime>
          <reference-assemblies basedir="${SL5RefAssemblyBaseDir}">
            <include name="Microsoft.VisualBasic.dll" />
            <include name="mscorlib.dll" />
            <include name="System.Core.dll" />
            <include name="system.dll" />
            <include name="System.Xml.dll" />
            <include name="System.Windows.dll" />
            <include name="System.Windows.Browser.dll" />
            <!-- Remaining libraries found in the Reference Assembly directory -->
            <include name="agcore.debug.dll" />
            <include name="agcore.dll" />
            <include name="coreclr.dll" />
            <include name="mscorrc.debug.dll" />
            <include name="mscorrc.dll" />
            <include name="npctrl.dll" />
            <include name="npctrlui.dll" />
            <include name="System.Net.dll" />
            <include name="System.Runtime.Serialization.dll" />
            <include name="System.ServiceModel.dll" />
            <include name="System.ServiceModel.Web.dll" />
            <!-- Remaining libraries are specific to XNA programming -->
            <include name="Microsoft.Xna.Framework.dll" />
            <include name="Microsoft.Xna.Framework.Graphics.dll" />
            <include name="Microsoft.Xna.Framework.Graphics.Shaders.dll" />
            <include name="System.Windows.Xna.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="${SL5RefAssemblyBaseDir}" />
            <directory name="${path::combine(sdkInstallRoot, 'bin')}"
                if="${property::exists('sdkInstallRoot')}" />
            <directory name="${path::combine(installRoot, 'v4.0.30319')}" />
          </tool-paths>
          <project>
            <readregistry property="SL5RefAssemblyBaseDir"
                key="SOFTWARE\Microsoft\Microsoft SDKs\Silverlight\v5.0\ReferenceAssemblies\SLRuntimeInstallPath"
                hive="LocalMachine" />
            <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="noconfig">true</attribute>
              <attribute name="nostdlib">true</attribute>
              <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="nostdlib">true</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="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>
        <framework
            name="mono-1.0"
            family="mono"
            version="1.0"
            description="Mono 1.0 Profile"
            sdkdirectory="${toolDirectory}"
            frameworkdirectory="${toolDirectory}"
            frameworkassemblydirectory="${path::combine(frameworkAssemblyDirectory, 'mono/1.0')}"
            clrversion="1.1.4322"
            clrtype="Desktop"
            vendor="Mono"
                    >
          <runtime>
            <probing-paths>
              <directory name="lib/mono/1.0" />
              <directory name="lib/mono/neutral" />
              <directory name="lib/common/1.1" />
              <directory name="lib/common/neutral" />
            </probing-paths>
            <modes>
              <auto>
                <engine program="${runtimeEngine}" />
                <environment>
                  <variable name="PATH" path="${path::combine(sdkInstallRoot, 'bin')};%PATH%" />
                  <variable name="MONO_CFG_DIR" path="${configDir};%MONO_CFG_DIR%" />
                </environment>
              </auto>
              <strict>
                <engine program="${runtimeEngine}">
                  <arg value="--runtime=v1.1.4322" />
                </engine>
                <environment>
                  <variable name="PATH" path="${path::combine(sdkInstallRoot, 'bin')};%PATH%" />
                  <variable name="MONO_CFG_DIR" path="${configDir};%MONO_CFG_DIR%" />
                </environment>
              </strict>
            </modes>
          </runtime>
          <reference-assemblies basedir="${path::combine(frameworkAssemblyDirectory, 'mono/1.0')}">
            <include name="*.dll" />
          </reference-assemblies>
          <task-assemblies>
            <!-- include Mono version-neutral assemblies -->
            <include name="extensions/mono/neutral/**/*.dll" />
            <!-- include Mono 1.0 specific assemblies -->
            <include name="extensions/mono/1.0/**/*.dll" />
            <!-- include .NET 1.1 specific assemblies -->
            <include name="extensions/common/1.1/**/*.dll" />
          </task-assemblies>
          <tool-paths>
            <directory name="${toolDirectory}" />
            <!-- unmanaged tools -->
            <directory name="${sdkInstallRoot}/bin" />
          </tool-paths>
          <project>
            <!-- quick and dirty check to see if pkg-config is available (and configured) -->
            <property name="pkgconfig.available" value="${environment::variable-exists('PKG_CONFIG_PATH')}" />
            <if test="${pkgconfig.available}">
              <if test="${pkg-config::exists('mono')}">
                <call target="configure-from-pkg-config" />
              </if>
              <if test="${not pkg-config::exists('mono')}">
                <call target="configure-from-registry" />
              </if>
            </if>
            <if test="${not pkgconfig.available}">
              <call target="configure-from-registry" />
            </if>

            <!-- determine if we're dealing with a Mono 1.0.x release -->
            <if test="${version::parse(mono.version) < version::parse('1.1')}">
              <!-- 
                                in Mono 1.0.x, the framework tools are located 
                                in the <install root>\lib directory
                            -->
              <property name="toolDirectory" value="${frameworkAssemblyDirectory}" />
              <property name="runtimeEngine" value="${path::combine(frameworkAssemblyDirectory, 'mono.exe')}" />
              <property name="resgen.tool" value="monoresgen" />
              <!-- in Mono 1.0.x, only mcs and mbas are located in <install root>\lib\mono\<profile> -->
              <property name="csc.tool" value="${path::combine(frameworkAssemblyDirectory, 'mono/1.0/mcs.exe')}" />
              <property name="mbas.tool" value="${path::combine(frameworkAssemblyDirectory, 'mono/1.0/mbas.exe')}" />
              <!-- /doc is not supported in Mono 1.0.x -->
              <property name="csc.supportsdocgeneration" value="false" />

              <!-- 
                                Mono 1.0.1 installer incorrectly adds '\mono' to 
                                "MonoConfigDir" registry value
                            -->
              <if test="${string::ends-with(configDir, 'etc\mono')}">
                <property name="configDir" value="${string::replace(configDir, 'etc\mono', 'etc')}" />
              </if>
            </if>

            <!-- determine if we're dealing with a Mono 1.1.x release or higher -->
            <if test="${version::parse(mono.version) >= version::parse('1.1')}">
              <!-- 
                                in Mono 1.1.x (and higher ?), the framework tools 
                                are located in the <install root>\lib\mono\<profile>
                                directory
                            -->
              <property name="toolDirectory" value="${path::combine(frameworkAssemblyDirectory, 'mono/1.0')}" />
              <property name="runtimeEngine" value="${path::combine(frameworkAssemblyDirectory, 'mono.exe')}" />
              <!-- starting from Mono 1.1.9.2, mono.exe is located in the bin directory -->
              <if test="${not file::exists(runtimeEngine)}">
                <property name="runtimeEngine" value="${path::combine(sdkInstallRoot, 'bin/mono.exe')}" />
              </if>
              <property name="resgen.tool" value="resgen" />
              <property name="csc.tool" value="mcs" />
              <property name="csc.supportsdocgeneration" value="true" />
              <property name="mbas.tool" value="mbas" />
            </if>

            <target name="configure-from-pkg-config">
              <property name="mono.version" value="${pkg-config::get-mod-version('mono')}" />
              <property name="sdkInstallRoot" value="${cygpath::get-windows-path(pkg-config::get-variable('mono', 'prefix'))}" />
              <property name="frameworkAssemblyDirectory" value="${cygpath::get-windows-path(pkg-config::get-variable('mono', 'libdir'))}" />
              <property name="configDir" value="${path::combine(sdkInstallRoot, 'etc')}/" />
            </target>

            <target name="configure-from-registry">
              <monoregistry property="mono.reg" failonerror="false" />
              <readregistry
                  property="mono.version"
                  key="${mono.reg}\DefaultCLR"
                  hive="LocalMachine"
                            />
              <property name="monokey" value="${mono.reg}\${mono.version}" />

              <readregistry
                  property="sdkInstallRoot"
                  key="${monokey}\SdkInstallRoot"
                  hive="LocalMachine" />
              <readregistry
                  property="frameworkAssemblyDirectory"
                  key="${monokey}\FrameworkAssemblyDirectory"
                  hive="LocalMachine" />
              <readregistry
                  property="configDir"
                  key="${monokey}\MonoConfigDir"
                  hive="LocalMachine" />
            </target>
          </project>
          <properties>
          </properties>
          <tasks>
            <task name="al">
              <attribute name="managed">true</attribute>
            </task>
            <task name="csc">
              <attribute name="exename">${csc.tool}</attribute>
              <attribute name="managed">true</attribute>
              <attribute name="supportspackagereferences">true</attribute>
              <attribute name="supportsnowarnlist">true</attribute>
              <attribute name="supportsdocgeneration">${csc.supportsdocgeneration}</attribute>
              <attribute name="supportskeycontainer">true</attribute>
              <attribute name="supportskeyfile">true</attribute>
              <attribute name="supportsdelaysign">true</attribute>
              <attribute name="supportslangversion">true</attribute>
            </task>
            <task name="jsc">
              <attribute name="exename">mjs</attribute>
              <attribute name="managed">true</attribute>
            </task>
            <task name="vbc">
              <attribute name="exename">${mbas.tool}</attribute>
              <attribute name="managed">true</attribute>
            </task>
            <task name="resgen">
              <attribute name="exename">${resgen.tool}</attribute>
              <attribute name="managed">true</attribute>
            </task>
            <task name="delay-sign">
              <attribute name="exename">sn</attribute>
              <attribute name="managed">true</attribute>
            </task>
            <task name="license">
              <attribute name="hascommandlinecompiler">false</attribute>
            </task>
            <task name="ilasm">
              <attribute name="managed">true</attribute>
            </task>
          </tasks>
        </framework>
        <framework
            name="mono-2.0"
            family="mono"
            version="2.0"
            description="Mono 2.0 Profile"
            sdkdirectory="${toolDirectory}"
            frameworkdirectory="${toolDirectory}"
            frameworkassemblydirectory="${path::combine(frameworkAssemblyDirectory, 'mono/2.0')}"
            clrversion="2.0.50727"
            clrtype="Desktop"
            vendor="Mono"
                    >
          <runtime>
            <probing-paths>
              <directory name="lib/mono/2.0" />
              <directory name="lib/mono/neutral" />
              <directory name="lib/common/2.0" />
              <directory name="lib/common/neutral" />
            </probing-paths>
            <modes>
              <auto>
                <engine program="${runtimeEngine}" />
                <environment>
                  <variable name="PATH" path="${path::combine(sdkInstallRoot, 'bin')};%PATH%" />
                  <variable name="MONO_CFG_DIR" path="${configDir};%MONO_CFG_DIR%" />
                </environment>
              </auto>
              <strict>
                <engine program="${runtimeEngine}">
                  <arg value="--runtime=v2.0.50727" />
                </engine>
                <environment>
                  <variable name="PATH" path="${path::combine(sdkInstallRoot, 'bin')};%PATH%" />
                  <variable name="MONO_CFG_DIR" path="${configDir};%MONO_CFG_DIR%" />
                </environment>
              </strict>
            </modes>
          </runtime>
          <reference-assemblies basedir="${path::combine(frameworkAssemblyDirectory, 'mono/2.0')}">
            <include name="*.dll" />
          </reference-assemblies>
          <task-assemblies>
            <!-- include Mono version-neutral assemblies -->
            <include name="extensions/mono/neutral/**/*.dll" />
            <!-- include Mono 2.0 specific assemblies -->
            <include name="extensions/mono/2.0/**/*.dll" />
            <!-- include .NET 2.0 specific assemblies -->
            <include name="extensions/common/2.0/**/*.dll" />
          </task-assemblies>
          <tool-paths>
            <directory name="${toolDirectory}" />
            <directory name="${path::combine(frameworkAssemblyDirectory, 'mono/1.0')}" />
            <!-- for compatibility with Mono 1.0.x -->
            <directory name="${frameworkAssemblyDirectory}" />
            <!-- unmanaged tools -->
            <directory name="${sdkInstallRoot}/bin" />
          </tool-paths>
          <project>
            <!-- quick and dirty check to see if pkg-config is available (and configured) -->
            <property name="pkgconfig.available" value="${environment::variable-exists('PKG_CONFIG_PATH')}" />
            <if test="${pkgconfig.available}">
              <if test="${pkg-config::exists('mono')}">
                <call target="configure-from-pkg-config" />
              </if>
              <if test="${not pkg-config::exists('mono')}">
                <call target="configure-from-registry" />
              </if>
            </if>
            <if test="${not pkgconfig.available}">
              <call target="configure-from-registry" />
            </if>

            <property name="resgen.supportsexternalfilereferences" value="false" />

            <!-- determine if we're dealing with a Mono 1.0.x release -->
            <if test="${version::parse(mono.version) < version::parse('1.1')}">
              <!-- 
                                in Mono 1.0.x, the framework tools are located 
                                in the <install root>\lib directory, except for
                                mbas and mcs
                            -->
              <property name="toolDirectory" value="${frameworkAssemblyDirectory}" />
              <property name="runtimeEngine" value="${path::combine(frameworkAssemblyDirectory, 'mono.exe')}" />
              <property name="resgen.tool" value="monoresgen" />
              <property name="csc.supportsdocgeneration" value="false" />

              <!-- 
                                Mono 1.0.1 installer incorrectly adds '\mono' to 
                                "MonoConfigDir" registry value
                            -->
              <if test="${string::ends-with(configDir, 'etc\mono')}">
                <property name="configDir" value="${string::replace(configDir, 'etc\mono', 'etc')}" />
              </if>
            </if>

            <!-- determine if we're dealing with a Mono 1.1.x release or higher -->
            <if test="${version::parse(mono.version) >= version::parse('1.1')}">
              <property name="toolDirectory" value="${path::combine(frameworkAssemblyDirectory, 'mono/2.0')}" />
              <property name="runtimeEngine" value="${path::combine(frameworkAssemblyDirectory, 'mono.exe')}" />
              <!-- starting from Mono 1.1.9.2, mono.exe is located in the bin directory -->
              <if test="${not file::exists(runtimeEngine)}">
                <property name="runtimeEngine" value="${path::combine(sdkInstallRoot, 'bin/mono.exe')}" />
              </if>
              <property name="csc.supportsdocgeneration" value="true" />
            </if>
            <!-- as from Mono 1.2.3.50, resgen supports the /usesourcepath option -->
            <if test="${version::parse(mono.version) >= version::parse('1.2.3.50')}">
              <property name="resgen.supportsexternalfilereferences" value="true" />
            </if>

            <target name="configure-from-pkg-config">
              <property name="mono.version" value="${pkg-config::get-mod-version('mono')}" />
              <property name="sdkInstallRoot" value="${cygpath::get-windows-path(pkg-config::get-variable('mono', 'prefix'))}" />
              <property name="frameworkAssemblyDirectory" value="${cygpath::get-windows-path(pkg-config::get-variable('mono', 'libdir'))}" />
              <property name="configDir" value="${path::combine(sdkInstallRoot, 'etc')}/" />
            </target>

            <target name="configure-from-registry">
              <monoregistry property="mono.reg" failonerror="false" />
              <readregistry
                  property="mono.version"
                  key="${mono.reg}\DefaultCLR"
                  hive="LocalMachine"
                            />
              <property name="monokey" value="${mono.reg}\${mono.version}" />

              <readregistry
                  property="sdkInstallRoot"
                  key="${monokey}\SdkInstallRoot"
                  hive="LocalMachine" />
              <readregistry
                  property="frameworkAssemblyDirectory"
                  key="${monokey}\FrameworkAssemblyDirectory"
                  hive="LocalMachine" />
              <readregistry
                  property="configDir"
                  key="${monokey}\MonoConfigDir"
                  hive="LocalMachine" />
            </target>
          </project>
          <properties>
          </properties>
          <tasks>
            <task name="al">
              <attribute name="managed">true</attribute>
            </task>
            <task name="csc">
              <attribute name="exename">gmcs</attribute>
              <attribute name="managed">true</attribute>
              <attribute name="supportspackagereferences">true</attribute>
              <attribute name="supportsnowarnlist">true</attribute>
              <attribute name="supportsdocgeneration">${csc.supportsdocgeneration}</attribute>
              <attribute name="supportskeycontainer">true</attribute>
              <attribute name="supportskeyfile">true</attribute>
              <attribute name="supportsdelaysign">true</attribute>
              <attribute name="supportslangversion">true</attribute>
            </task>
            <task name="jsc">
              <attribute name="exename">mjs</attribute>
              <attribute name="managed">strict</attribute>
            </task>
            <task name="vbc">
              <attribute name="exename">vbnc</attribute>
              <attribute name="managed">true</attribute>
            </task>
            <task name="resgen">
              <attribute name="exename">${resgen.tool}</attribute>
              <attribute name="managed">true</attribute>
              <attribute name="supportsexternalfilereferences">${resgen.supportsexternalfilereferences}</attribute>
            </task>
            <task name="delay-sign">
              <attribute name="exename">sn</attribute>
              <attribute name="managed">true</attribute>
            </task>
            <task name="license">
              <attribute name="hascommandlinecompiler">false</attribute>
            </task>
            <task name="ilasm">
              <attribute name="managed">true</attribute>
            </task>
          </tasks>
        </framework>
        <framework
            name="mono-3.5"
            family="mono"
            version="3.5"
            description="Mono 3.5 Profile"
            sdkdirectory="${toolDirectory}"
            frameworkdirectory="${toolDirectory}"
            frameworkassemblydirectory="${path::combine(frameworkAssemblyDirectory, 'mono/2.0')}"
            clrversion="2.0.50727"
            clrtype="Desktop"
            vendor="Mono"
                    >
          <runtime>
            <probing-paths>
              <directory name="lib/mono/2.0" />
              <directory name="lib/mono/neutral" />
              <directory name="lib/common/2.0" />
              <directory name="lib/common/neutral" />
            </probing-paths>
            <modes>
              <auto>
                <engine program="${runtimeEngine}" />
                <environment>
                  <variable name="PATH" path="${path::combine(sdkInstallRoot, 'bin')};%PATH%" />
                  <variable name="MONO_CFG_DIR" path="${configDir};%MONO_CFG_DIR%" />
                </environment>
              </auto>
              <strict>
                <engine program="${runtimeEngine}">
                  <arg value="--runtime=v2.0.50727" />
                </engine>
                <environment>
                  <variable name="PATH" path="${path::combine(sdkInstallRoot, 'bin')};%PATH%" />
                  <variable name="MONO_CFG_DIR" path="${configDir};%MONO_CFG_DIR%" />
                </environment>
              </strict>
            </modes>
          </runtime>
          <reference-assemblies basedir="${path::combine(frameworkAssemblyDirectory, 'mono/3.5')}">
            <include name="*.dll" />
          </reference-assemblies>
          <reference-assemblies basedir="${path::combine(frameworkAssemblyDirectory, 'mono/3.0')}">
            <include name="*.dll" />
          </reference-assemblies>
          <reference-assemblies basedir="${path::combine(frameworkAssemblyDirectory, 'mono/2.0')}">
            <include name="*.dll" />
          </reference-assemblies>
          <task-assemblies>
            <!-- include Mono version-neutral assemblies -->
            <include name="extensions/mono/neutral/**/*.dll" />
            <!-- include Mono 2.0 specific assemblies -->
            <include name="extensions/mono/2.0/**/*.dll" />
            <!-- include .NET 2.0 specific assemblies -->
            <include name="extensions/common/2.0/**/*.dll" />
          </task-assemblies>
          <tool-paths>
            <directory name="${path::combine(frameworkAssemblyDirectory, 'mono/3.5')}" />
            <directory name="${path::combine(frameworkAssemblyDirectory, 'mono/2.0')}" />
            <directory name="${path::combine(frameworkAssemblyDirectory, 'mono/1.0')}" />
            <!-- unmanaged tools -->
            <directory name="${sdkInstallRoot}/bin" />
          </tool-paths>
          <project>
            <!-- quick and dirty check to see if pkg-config is available (and configured) -->
            <property name="pkgconfig.available" value="${environment::variable-exists('PKG_CONFIG_PATH')}" />
            <if test="${pkgconfig.available}">
              <if test="${pkg-config::exists('mono')}">
                <call target="configure-from-pkg-config" />
              </if>
              <if test="${not pkg-config::exists('mono')}">
                <call target="configure-from-registry" />
              </if>
            </if>
            <if test="${not pkgconfig.available}">
              <call target="configure-from-registry" />
            </if>

            <property name="toolDirectory" value="${path::combine(frameworkAssemblyDirectory, 'mono/3.5')}" />
            <property name="runtimeEngine" value="${path::combine(sdkInstallRoot, 'bin/mono.exe')}" />

            <target name="configure-from-pkg-config">
              <property name="mono.version" value="${pkg-config::get-mod-version('mono')}" />
              <property name="sdkInstallRoot" value="${cygpath::get-windows-path(pkg-config::get-variable('mono', 'prefix'))}" />
              <property name="frameworkAssemblyDirectory" value="${cygpath::get-windows-path(pkg-config::get-variable('mono', 'libdir'))}" />
              <property name="configDir" value="${path::combine(sdkInstallRoot, 'etc')}/" />
            </target>

            <target name="configure-from-registry">
              <monoregistry property="mono.reg" failonerror="false" />
              <readregistry
                  property="mono.version"
                  key="${mono.reg}\DefaultCLR"
                  hive="LocalMachine"
                            />
              <property name="monokey" value="${mono.reg}\${mono.version}" />

              <readregistry
                  property="sdkInstallRoot"
                  key="${monokey}\SdkInstallRoot"
                  hive="LocalMachine" />
              <readregistry
                  property="frameworkAssemblyDirectory"
                  key="${monokey}\FrameworkAssemblyDirectory"
                  hive="LocalMachine" />
              <readregistry
                  property="configDir"
                  key="${monokey}\MonoConfigDir"
                  hive="LocalMachine" />
            </target>
          </project>
          <properties>
          </properties>
          <tasks>
            <task name="al">
              <attribute name="managed">true</attribute>
            </task>
            <task name="csc">
              <attribute name="exename">gmcs</attribute>
              <attribute name="managed">true</attribute>
              <attribute name="langversion">linq</attribute>
              <attribute name="supportspackagereferences">true</attribute>
              <attribute name="supportsnowarnlist">true</attribute>
              <attribute name="supportsdocgeneration">true</attribute>
              <attribute name="supportskeycontainer">true</attribute>
              <attribute name="supportskeyfile">true</attribute>
              <attribute name="supportsdelaysign">true</attribute>
              <attribute name="supportslangversion">true</attribute>
            </task>
            <task name="jsc">
              <attribute name="exename">mjs</attribute>
              <attribute name="managed">strict</attribute>
            </task>
            <task name="vbc">
              <attribute name="exename">vbnc</attribute>
              <attribute name="managed">true</attribute>
            </task>
            <task name="resgen">
              <attribute name="managed">true</attribute>
              <attribute name="supportsexternalfilereferences">true</attribute>
            </task>
            <task name="delay-sign">
              <attribute name="exename">sn</attribute>
              <attribute name="managed">true</attribute>
            </task>
            <task name="license">
              <attribute name="hascommandlinecompiler">false</attribute>
            </task>
            <task name="ilasm">
              <attribute name="managed">true</attribute>
            </task>
          </tasks>
        </framework>
        <framework
            name="mono-4.0"
            family="mono"
            version="4.0"
            description="Mono 4.0 Profile"
            sdkdirectory="${toolDirectory}"
            frameworkdirectory="${toolDirectory}"
            frameworkassemblydirectory="${path::combine(frameworkAssemblyDirectory, 'mono/4.0')}"
            clrversion="4.0.30319"
            clrtype="Desktop"
            vendor="Mono"
                    >
          <runtime>
            <probing-paths>
              <directory name="lib/mono/2.0" />
              <directory name="lib/mono/neutral" />
              <directory name="lib/common/2.0" />
              <directory name="lib/common/neutral" />
            </probing-paths>
            <modes>
              <auto>
                <engine program="${runtimeEngine}" />
                <environment>
                  <variable name="PATH" path="${path::combine(sdkInstallRoot, 'bin')};%PATH%" />
                  <variable name="MONO_CFG_DIR" path="${configDir};%MONO_CFG_DIR%" />
                </environment>
              </auto>
              <strict>
                <engine program="${runtimeEngine}">
                  <arg value="--runtime=v4.0.30319" />
                </engine>
                <environment>
                  <variable name="PATH" path="${path::combine(sdkInstallRoot, 'bin')};%PATH%" />
                  <variable name="MONO_CFG_DIR" path="${configDir};%MONO_CFG_DIR%" />
                </environment>
              </strict>
            </modes>
          </runtime>
          <reference-assemblies basedir="${path::combine(frameworkAssemblyDirectory, 'mono/4.0')}">
            <include name="*.dll" />
          </reference-assemblies>
          <reference-assemblies basedir="${path::combine(frameworkAssemblyDirectory, 'mono/3.5')}">
            <include name="*.dll" />
          </reference-assemblies>
          <reference-assemblies basedir="${path::combine(frameworkAssemblyDirectory, 'mono/3.0')}">
            <include name="*.dll" />
          </reference-assemblies>
          <reference-assemblies basedir="${path::combine(frameworkAssemblyDirectory, 'mono/2.0')}">
            <include name="*.dll" />
          </reference-assemblies>
          <task-assemblies>
            <!-- include Mono version-neutral assemblies -->
            <include name="extensions/mono/neutral/**/*.dll" />
            <!-- include Mono 2.0 specific assemblies -->
            <include name="extensions/mono/2.0/**/*.dll" />
            <!-- include .NET 2.0 specific assemblies -->
            <include name="extensions/common/2.0/**/*.dll" />
          </task-assemblies>
          <tool-paths>
            <directory name="${path::combine(frameworkAssemblyDirectory, 'mono/4.0')}" />
            <directory name="${path::combine(frameworkAssemblyDirectory, 'mono/3.5')}" />
            <directory name="${path::combine(frameworkAssemblyDirectory, 'mono/2.0')}" />
            <directory name="${path::combine(frameworkAssemblyDirectory, 'mono/1.0')}" />
            <!-- unmanaged tools -->
            <directory name="${sdkInstallRoot}/bin" />
          </tool-paths>
          <project>
            <!-- quick and dirty check to see if pkg-config is available (and configured) -->
            <property name="pkgconfig.available" value="${environment::variable-exists('PKG_CONFIG_PATH')}" />
            <if test="${pkgconfig.available}">
              <if test="${pkg-config::exists('mono')}">
                <call target="configure-from-pkg-config" />
              </if>
              <if test="${not pkg-config::exists('mono')}">
                <call target="configure-from-registry" />
              </if>
            </if>
            <if test="${not pkgconfig.available}">
              <call target="configure-from-registry" />
            </if>

            <property name="toolDirectory" value="${path::combine(frameworkAssemblyDirectory, 'mono/4.0')}" />
            <property name="runtimeEngine" value="${path::combine(sdkInstallRoot, 'bin/mono.exe')}" />

            <target name="configure-from-pkg-config">
              <property name="mono.version" value="${pkg-config::get-mod-version('mono')}" />
              <property name="sdkInstallRoot" value="${cygpath::get-windows-path(pkg-config::get-variable('mono', 'prefix'))}" />
              <property name="frameworkAssemblyDirectory" value="${cygpath::get-windows-path(pkg-config::get-variable('mono', 'libdir'))}" />
              <property name="configDir" value="${path::combine(sdkInstallRoot, 'etc')}/" />
            </target>

            <target name="configure-from-registry">
              <monoregistry property="mono.reg" failonerror="false" />
              <readregistry
                  property="mono.version"
                  key="${mono.reg}\DefaultCLR"
                  hive="LocalMachine"
                            />
              <property name="monokey" value="${mono.reg}\${mono.version}" />

              <readregistry
                  property="sdkInstallRoot"
                  key="${monokey}\SdkInstallRoot"
                  hive="LocalMachine" />
              <readregistry
                  property="frameworkAssemblyDirectory"
                  key="${monokey}\FrameworkAssemblyDirectory"
                  hive="LocalMachine" />
              <readregistry
                  property="configDir"
                  key="${monokey}\MonoConfigDir"
                  hive="LocalMachine" />
            </target>
          </project>
          <properties>
          </properties>
          <tasks>
            <task name="al">
              <attribute name="managed">true</attribute>
            </task>
            <task name="csc">
              <attribute name="exename">dmcs</attribute>
              <attribute name="managed">true</attribute>
              <attribute name="langversion">linq</attribute>
              <attribute name="supportspackagereferences">true</attribute>
              <attribute name="supportsnowarnlist">true</attribute>
              <attribute name="supportsdocgeneration">true</attribute>
              <attribute name="supportskeycontainer">true</attribute>
              <attribute name="supportskeyfile">true</attribute>
              <attribute name="supportsdelaysign">true</attribute>
              <attribute name="supportslangversion">true</attribute>
            </task>
            <task name="jsc">
              <attribute name="exename">mjs</attribute>
              <attribute name="managed">strict</attribute>
            </task>
            <task name="vbc">
              <attribute name="exename">vbnc</attribute>
              <attribute name="managed">true</attribute>
            </task>
            <task name="resgen">
              <attribute name="managed">true</attribute>
              <attribute name="supportsexternalfilereferences">true</attribute>
            </task>
            <task name="delay-sign">
              <attribute name="exename">sn</attribute>
              <attribute name="managed">true</attribute>
            </task>
            <task name="license">
              <attribute name="hascommandlinecompiler">false</attribute>
            </task>
            <task name="ilasm">
              <attribute name="managed">true</attribute>
            </task>
          </tasks>
        </framework>
        <framework
            name="moonlight-2.0"
            family="moonlight"
            version="2.0"
            description="Moonlight 2.0"
            sdkdirectory="${toolDirectory}"
            frameworkdirectory="${toolDirectory}"
            frameworkassemblydirectory="${toolDirectory}"
            clrversion="2.0.50727"
            clrtype="Browser"
            vendor="Mono"
                    >
          <runtime>
            <modes>
              <auto>
                <engine program="${runtimeEngine}">
                  <arg value="--runtime=moonlight" />
                  <arg value="--security=temporary-smcs-hack" />
                </engine>
              </auto>
            </modes>
          </runtime>
          <reference-assemblies basedir="${path::combine(frameworkAssemblyDirectory, 'lib/mono/2.1')}">
            <include name="Microsoft.VisualBasic.dll" />
            <include name="mscorlib.dll" />
            <include name="System.Core.dll" />
            <include name="System.dll" />
            <include name="System.Net.dll" />
            <include name="System.Runtime.Serialization.dll" />
            <include name="System.ServiceModel.dll" />
            <include name="System.ServiceModel.Web.dll" />
            <include name="System.Windows.Browser.dll" />
            <include name="System.Windows.dll" />
            <include name="System.Xml.dll" />
          </reference-assemblies>
          <task-assemblies>
            <!-- include MS.NET version-neutral assemblies -->
            <include name="extensions/net/neutral/**/*.dll" />
            <!-- include MS.NET 2.0 specific assemblies -->
            <include name="extensions/net/2.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 2.0 specific assemblies -->
            <include name="extensions/common/2.0/**/*.dll" />
          </task-assemblies>
          <tool-paths>
            <directory name="${toolDirectory}" />
            <directory name="${path::combine(frameworkAssemblyDirectory, 'mono/2.0')}" />
            <directory name="${path::combine(frameworkAssemblyDirectory, 'mono/1.0')}" />
            <!-- unmanaged tools -->
            <directory name="${sdkInstallRoot}/bin" />
          </tool-paths>
          <project>
            <!-- quick and dirty check to see if pkg-config is available (and configured) -->
            <property name="pkgconfig.available" value="${environment::variable-exists('PKG_CONFIG_PATH')}" />
            <if test="${pkgconfig.available}">
              <if test="${pkg-config::exists('mono')}">
                <call target="configure-from-pkg-config" />
              </if>
              <if test="${not pkg-config::exists('mono')}">
                <call target="configure-from-registry" />
              </if>
            </if>
            <if test="${not pkgconfig.available}">
              <call target="configure-from-registry" />
            </if>

            <property name="toolDirectory" value="${path::combine(frameworkAssemblyDirectory, 'mono/2.1')}" />
            <property name="runtimeEngine" value="${path::combine(sdkInstallRoot, 'bin/mono.exe')}" />

            <target name="configure-from-pkg-config">
              <property name="mono.version" value="${pkg-config::get-mod-version('mono')}" />
              <property name="sdkInstallRoot" value="${cygpath::get-windows-path(pkg-config::get-variable('mono', 'prefix'))}" />
              <property name="frameworkAssemblyDirectory" value="${cygpath::get-windows-path(pkg-config::get-variable('mono', 'libdir'))}" />
              <property name="configDir" value="${path::combine(sdkInstallRoot, 'etc')}/" />
            </target>

            <target name="configure-from-registry">
              <monoregistry property="mono.reg" failonerror="false" />
              <readregistry
                  property="mono.version"
                  key="${mono.reg}\DefaultCLR"
                  hive="LocalMachine"
                            />
              <property name="monokey" value="${mono.reg}\${mono.version}" />

              <readregistry
                  property="sdkInstallRoot"
                  key="${monokey}\SdkInstallRoot"
                  hive="LocalMachine" />
              <readregistry
                  property="frameworkAssemblyDirectory"
                  key="${monokey}\FrameworkAssemblyDirectory"
                  hive="LocalMachine" />
              <readregistry
                  property="configDir"
                  key="${monokey}\MonoConfigDir"
                  hive="LocalMachine" />
            </target>
          </project>
          <tasks>
            <task name="csc">
              <attribute name="exename">smcs</attribute>
              <attribute name="managed">true</attribute>
              <attribute name="supportspackagereferences">true</attribute>
              <attribute name="supportsnowarnlist">true</attribute>
              <attribute name="supportsdocgeneration">true</attribute>
              <attribute name="supportskeycontainer">true</attribute>
              <attribute name="supportskeyfile">true</attribute>
              <attribute name="supportsdelaysign">true</attribute>
              <attribute name="supportslangversion">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="hascommandlinecompiler">false</attribute>
            </task>
          </tasks>
        </framework>
        <framework
            name="sscli-1.0"
            family="sscli"
            version="1.0"
            description="Microsoft Shared Source CLI 1.0"
            sdkdirectory="C:\sscli\build\v1.x86fstchk.rotor\sdk\bin"
            frameworkdirectory="C:\sscli\build\v1.x86fstchk.rotor"
            frameworkassemblydirectory="C:\sscli\build\v1.x86fstchk.rotor"
            clrversion="1.0.3"
            clrtype="Desktop"
            vendor="Microsoft"
                    >
          <runtime>
            <modes>
              <auto>
                <engine program="C:\sscli\build\v1.x86fstchk.rotor\clix.exe" />
              </auto>
            </modes>
          </runtime>
          <reference-assemblies basedir="C:\sscli\build\v1.x86fstchk.rotor">
            <include name="*.dll" />
          </reference-assemblies>
          <task-assemblies>
            <!-- this is not a supported runtime framework -->
          </task-assemblies>
          <tool-paths>
            <directory name="C:\sscli\build\v1.x86fstchk.rotor\sdk\bin" />
            <directory name="C:\sscli\build\v1.x86fstchk.rotor" />
          </tool-paths>
          <project />
          <tasks>
            <task name="csc">
              <attribute name="supportsnowarnlist">true</attribute>
            </task>
            <task name="jsc">
              <attribute name="managed">true</attribute>
            </task>
            <task name="delay-sign">
              <attribute name="exename">sn</attribute>
            </task>
            <task name="license">
              <attribute name="hascommandlinecompiler">false</attribute>
            </task>
            <task name="ilasm">
              <attribute name="managed">true</attribute>
            </task>
            <task name="ildasm">
              <attribute name="managed">true</attribute>
            </task>
          </tasks>
        </framework>
        <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>
      </platform>
      <platform name="unix" default="auto">
        <task-assemblies>
          <!-- include NAnt task assemblies -->
          <include name="*Tasks.dll" />
          <!-- include NAnt test assemblies -->
          <include name="*Tests.dll" />
          <!-- include framework-neutral assemblies -->
          <include name="extensions/common/neutral/**/*.dll" />
          <!-- exclude Microsoft.NET specific task assembly -->
          <exclude name="NAnt.MSNetTasks.dll" />
          <!-- exclude Microsoft.NET specific test assembly -->
          <exclude name="NAnt.MSNet.Tests.dll" />
          <!-- exclude win32 specific task assembly -->
          <exclude name="NAnt.Win32Tasks.dll" />
          <!-- exclude win32 specific test assembly -->
          <exclude name="NAnt.Win32.Tests.dll" />
        </task-assemblies>
        <framework
            name="mono-1.0"
            family="mono"
            version="1.0"
            description="Mono 1.0 Profile"
            sdkdirectory="${toolDirectory}"
            frameworkdirectory="${toolDirectory}"
            frameworkassemblydirectory="${path::combine(prefix, 'lib/mono/1.0')}"
            clrversion="1.1.4322"
            clrtype="Desktop"
            vendor="Mono"
                    >
          <runtime>
            <probing-paths>
              <directory name="lib/mono/1.0" />
              <directory name="lib/mono/neutral" />
              <directory name="lib/common/1.1" />
              <directory name="lib/common/neutral" />
            </probing-paths>
            <modes>
              <auto>
                <engine program="${path::combine(prefix, 'bin/mono')}" />
              </auto>
              <strict>
                <engine program="${path::combine(prefix, 'bin/mono')}">
                  <arg value="--runtime=v1.1.4322" />
                </engine>
              </strict>
            </modes>
          </runtime>
          <reference-assemblies basedir="${path::combine(prefix, 'lib/mono/1.0')}">
            <include name="*.dll" />
          </reference-assemblies>
          <task-assemblies>
            <!-- include Mono version-neutral assemblies -->
            <include name="extensions/mono/neutral/**/*.dll" />
            <!-- include Mono 1.0 specific assemblies -->
            <include name="extensions/mono/1.0/**/*.dll" />
            <!-- include .NET 1.1 specific assemblies -->
            <include name="extensions/common/1.1/**/*.dll" />
          </task-assemblies>
          <tool-paths>
            <directory name="${toolDirectory}" />
            <!-- unmanaged tools -->
            <directory name="${prefix}/bin" />
          </tool-paths>
          <project>
            <if test="${not pkg-config::exists('mono')}">
              <fail>Unable to locate 'mono' module using pkg-config. Download the Mono development packages from http://www.mono-project.com/downloads/.</fail>
            </if>
            <property name="prefix" value="${pkg-config::get-variable('mono', 'prefix')}" />
            <if test="${not(pkg-config::is-atleast-version('mono', '1.1'))}">
              <property name="toolDirectory" value="${path::combine(prefix, 'bin')}" />
              <property name="resgen.tool" value="monoresgen" />
              <property name="csc.supportsdocgeneration" value="false" />
            </if>
            <if test="${pkg-config::is-atleast-version('mono', '1.1')}">
              <property name="toolDirectory" value="${path::combine(prefix, 'lib/mono/1.0')}" />
              <property name="resgen.tool" value="resgen" />
              <property name="csc.supportsdocgeneration" value="true" />
            </if>
          </project>
          <tasks>
            <task name="al">
              <attribute name="managed">true</attribute>
            </task>
            <task name="csc">
              <attribute name="exename">${path::combine(prefix, 'lib/mono/1.0/mcs.exe')}</attribute>
              <attribute name="managed">true</attribute>
              <attribute name="supportspackagereferences">true</attribute>
              <attribute name="supportsnowarnlist">true</attribute>
              <attribute name="supportsdocgeneration">${csc.supportsdocgeneration}</attribute>
              <attribute name="supportskeycontainer">true</attribute>
              <attribute name="supportskeyfile">true</attribute>
              <attribute name="supportsdelaysign">true</attribute>
              <attribute name="supportslangversion">true</attribute>
            </task>
            <task name="jsc">
              <attribute name="exename">mjs</attribute>
              <attribute name="managed">true</attribute>
            </task>
            <task name="vbc">
              <attribute name="exename">${path::combine(prefix, 'lib/mono/1.0/mbas.exe')}</attribute>
              <attribute name="managed">true</attribute>
            </task>
            <task name="resgen">
              <attribute name="exename">${resgen.tool}</attribute>
              <attribute name="managed">true</attribute>
            </task>
            <task name="delay-sign">
              <attribute name="exename">sn</attribute>
              <attribute name="managed">true</attribute>
            </task>
            <task name="license">
              <attribute name="hascommandlinecompiler">false</attribute>
            </task>
            <task name="ilasm">
              <attribute name="managed">true</attribute>
            </task>
          </tasks>
        </framework>
        <framework
            name="mono-2.0"
            family="mono"
            version="2.0"
            description="Mono 2.0 Profile"
            sdkdirectory="${toolDirectory}"
            frameworkdirectory="${toolDirectory}"
            frameworkassemblydirectory="${path::combine(prefix, 'lib/mono/2.0')}"
            clrversion="2.0.50727"
            clrtype="Desktop"
            vendor="Mono"
                    >
          <runtime>
            <probing-paths>
              <directory name="lib/mono/2.0" />
              <directory name="lib/mono/neutral" />
              <directory name="lib/common/2.0" />
              <directory name="lib/common/neutral" />
            </probing-paths>
            <modes>
              <auto>
                <engine program="${path::combine(prefix, 'bin/mono')}" />
              </auto>
              <strict>
                <engine program="${path::combine(prefix, 'bin/mono')}">
                  <arg value="--runtime=v2.0.50727" />
                </engine>
              </strict>
            </modes>
          </runtime>
          <reference-assemblies basedir="${path::combine(prefix, 'lib/mono/2.0')}">
            <include name="*.dll" />
          </reference-assemblies>
          <task-assemblies>
            <!-- include Mono version-neutral assemblies -->
            <include name="extensions/mono/neutral/**/*.dll" />
            <!-- include Mono 2.0 specific assemblies -->
            <include name="extensions/mono/2.0/**/*.dll" />
            <!-- include .NET 2.0 specific assemblies -->
            <include name="extensions/common/2.0/**/*.dll" />
          </task-assemblies>
          <tool-paths>
            <directory name="${toolDirectory}" />
            <directory name="${path::combine(prefix, 'lib/mono/1.0')}" />
            <!-- unmanaged tools -->
            <directory name="${prefix}/bin" />
          </tool-paths>
          <project>
            <if test="${not pkg-config::exists('mono')}">
              <fail>Unable to locate 'mono' module using pkg-config. Download the Mono development packages from http://www.mono-project.com/downloads/.</fail>
            </if>
            <property name="resgen.supportsexternalfilereferences" value="false" />
            <property name="prefix" value="${pkg-config::get-variable('mono', 'prefix')}" />
            <if test="${not(pkg-config::is-atleast-version('mono', '1.1'))}">
              <property name="toolDirectory" value="${path::combine(prefix, 'bin')}" />
              <property name="resgen.tool" value="monoresgen" />
              <property name="csc.supportsdocgeneration" value="false" />
            </if>
            <if test="${pkg-config::is-atleast-version('mono', '1.1')}">
              <property name="toolDirectory" value="${path::combine(prefix, 'lib/mono/2.0')}" />
              <property name="resgen.tool" value="resgen" />
              <property name="csc.supportsdocgeneration" value="true" />
            </if>
            <!-- as from Mono 1.2.3.50, resgen supports the /usesourcepath option -->
            <if test="${pkg-config::is-atleast-version('mono', '1.2.3.50')}">
              <property name="resgen.supportsexternalfilereferences" value="true" />
            </if>
          </project>
          <tasks>
            <task name="al">
              <attribute name="managed">true</attribute>
            </task>
            <task name="csc">
              <attribute name="exename">gmcs</attribute>
              <attribute name="managed">true</attribute>
              <attribute name="supportspackagereferences">true</attribute>
              <attribute name="supportsnowarnlist">true</attribute>
              <attribute name="supportsdocgeneration">${csc.supportsdocgeneration}</attribute>
              <attribute name="supportskeycontainer">true</attribute>
              <attribute name="supportskeyfile">true</attribute>
              <attribute name="supportsdelaysign">true</attribute>
              <attribute name="supportslangversion">true</attribute>
            </task>
            <task name="jsc">
              <attribute name="exename">mjs</attribute>
              <attribute name="managed">strict</attribute>
            </task>
            <task name="vbc">
              <attribute name="exename">vbnc</attribute>
              <attribute name="managed">true</attribute>
            </task>
            <task name="resgen">
              <attribute name="exename">${resgen.tool}</attribute>
              <attribute name="managed">true</attribute>
              <attribute name="supportsexternalfilereferences">${resgen.supportsexternalfilereferences}</attribute>
            </task>
            <task name="delay-sign">
              <attribute name="exename">sn</attribute>
              <attribute name="managed">true</attribute>
            </task>
            <task name="license">
              <attribute name="hascommandlinecompiler">false</attribute>
            </task>
            <task name="ilasm">
              <attribute name="managed">true</attribute>
            </task>
          </tasks>
        </framework>
        <framework
            name="mono-3.5"
            family="mono"
            version="3.5"
            description="Mono 3.5 Profile"
            sdkdirectory="${toolDirectory}"
            frameworkdirectory="${toolDirectory}"
            frameworkassemblydirectory="${path::combine(prefix, 'lib/mono/2.0')}"
            clrversion="2.0.50727"
            clrtype="Desktop"
            vendor="Mono"
                    >
          <runtime>
            <probing-paths>
              <directory name="lib/mono/2.0" />
              <directory name="lib/mono/neutral" />
              <directory name="lib/common/2.0" />
              <directory name="lib/common/neutral" />
            </probing-paths>
            <modes>
              <auto>
                <engine program="${path::combine(prefix, 'bin/mono')}" />
              </auto>
              <strict>
                <engine program="${path::combine(prefix, 'bin/mono')}">
                  <arg value="--runtime=v2.0.50727" />
                </engine>
              </strict>
            </modes>
          </runtime>
          <reference-assemblies basedir="${path::combine(prefix, 'lib/mono/3.5')}">
            <include name="*.dll" />
          </reference-assemblies>
          <reference-assemblies basedir="${path::combine(prefix, 'lib/mono/3.0')}">
            <include name="*.dll" />
          </reference-assemblies>
          <reference-assemblies basedir="${path::combine(prefix, 'lib/mono/2.0')}">
            <include name="*.dll" />
          </reference-assemblies>
          <task-assemblies>
            <!-- include Mono version-neutral assemblies -->
            <include name="extensions/mono/neutral/**/*.dll" />
            <!-- include Mono 2.0 specific assemblies -->
            <include name="extensions/mono/2.0/**/*.dll" />
            <!-- include .NET 2.0 specific assemblies -->
            <include name="extensions/common/2.0/**/*.dll" />
          </task-assemblies>
          <tool-paths>
            <directory name="${toolDirectory}" />
            <directory name="${path::combine(prefix, 'lib/mono/2.0')}" />
            <directory name="${path::combine(prefix, 'lib/mono/1.0')}" />
            <!-- unmanaged tools -->
            <directory name="${prefix}/bin" />
          </tool-paths>
          <project>
            <if test="${not pkg-config::exists('mono')}">
              <fail>Unable to locate 'mono' module using pkg-config. Download the Mono development packages from http://www.mono-project.com/downloads/.</fail>
            </if>
            <property name="resgen.supportsexternalfilereferences" value="false" />
            <property name="prefix" value="${pkg-config::get-variable('mono', 'prefix')}" />
            <property name="toolDirectory" value="${path::combine(prefix, 'lib/mono/3.5')}" />
          </project>
          <tasks>
            <task name="al">
              <attribute name="managed">true</attribute>
            </task>
            <task name="csc">
              <attribute name="exename">gmcs</attribute>
              <attribute name="managed">true</attribute>
              <attribute name="langversion">linq</attribute>
              <attribute name="supportspackagereferences">true</attribute>
              <attribute name="supportsnowarnlist">true</attribute>
              <attribute name="supportsdocgeneration">true</attribute>
              <attribute name="supportskeycontainer">true</attribute>
              <attribute name="supportskeyfile">true</attribute>
              <attribute name="supportsdelaysign">true</attribute>
              <attribute name="supportslangversion">true</attribute>
            </task>
            <task name="jsc">
              <attribute name="exename">mjs</attribute>
              <attribute name="managed">strict</attribute>
            </task>
            <task name="vbc">
              <attribute name="exename">vbnc</attribute>
              <attribute name="managed">true</attribute>
            </task>
            <task name="resgen">
              <attribute name="managed">true</attribute>
              <attribute name="supportsexternalfilereferences">true</attribute>
            </task>
            <task name="delay-sign">
              <attribute name="exename">sn</attribute>
              <attribute name="managed">true</attribute>
            </task>
            <task name="license">
              <attribute name="hascommandlinecompiler">false</attribute>
            </task>
            <task name="ilasm">
              <attribute name="managed">true</attribute>
            </task>
          </tasks>
        </framework>
        <framework
            name="mono-4.0"
            family="mono"
            version="4.0"
            description="Mono 4.0 Profile"
            sdkdirectory="${toolDirectory}"
            frameworkdirectory="${toolDirectory}"
            frameworkassemblydirectory="${path::combine(prefix, 'lib/mono/4.0')}"
            clrversion="4.0.30319"
            clrtype="Desktop"
            vendor="Mono"
                    >
          <runtime>
            <probing-paths>
              <directory name="lib/mono/2.0" />
              <directory name="lib/mono/neutral" />
              <directory name="lib/common/2.0" />
              <directory name="lib/common/neutral" />
            </probing-paths>
            <modes>
              <auto>
                <engine program="${path::combine(prefix, 'bin/mono')}" />
              </auto>
              <strict>
                <engine program="${path::combine(prefix, 'bin/mono')}">
                  <arg value="--runtime=v4.0.30319" />
                </engine>
              </strict>
            </modes>
          </runtime>
          <reference-assemblies basedir="${path::combine(prefix, 'lib/mono/4.0')}">
            <include name="*.dll" />
          </reference-assemblies>
          <reference-assemblies basedir="${path::combine(prefix, 'lib/mono/3.5')}">
            <include name="*.dll" />
          </reference-assemblies>
          <reference-assemblies basedir="${path::combine(prefix, 'lib/mono/3.0')}">
            <include name="*.dll" />
          </reference-assemblies>
          <reference-assemblies basedir="${path::combine(prefix, 'lib/mono/2.0')}">
            <include name="*.dll" />
          </reference-assemblies>
          <task-assemblies>
            <!-- include Mono version-neutral assemblies -->
            <include name="extensions/mono/neutral/**/*.dll" />
            <!-- include Mono 2.0 specific assemblies -->
            <include name="extensions/mono/2.0/**/*.dll" />
            <!-- include .NET 2.0 specific assemblies -->
            <include name="extensions/common/2.0/**/*.dll" />
          </task-assemblies>
          <tool-paths>
            <directory name="${toolDirectory}" />
            <directory name="${path::combine(prefix, 'lib/mono/3.5')}" />
            <directory name="${path::combine(prefix, 'lib/mono/2.0')}" />
            <directory name="${path::combine(prefix, 'lib/mono/1.0')}" />
            <!-- unmanaged tools -->
            <directory name="${prefix}/bin" />
          </tool-paths>
          <project>
            <if test="${not pkg-config::exists('mono')}">
              <fail>Unable to locate 'mono' module using pkg-config. Download the Mono development packages from http://www.mono-project.com/downloads/.</fail>
            </if>
            <property name="resgen.supportsexternalfilereferences" value="false" />
            <property name="prefix" value="${pkg-config::get-variable('mono', 'prefix')}" />
            <property name="toolDirectory" value="${path::combine(prefix, 'lib/mono/4.0')}" />
          </project>
          <tasks>
            <task name="al">
              <attribute name="managed">true</attribute>
            </task>
            <task name="csc">
              <attribute name="exename">dmcs</attribute>
              <attribute name="managed">true</attribute>
              <attribute name="langversion">linq</attribute>
              <attribute name="supportspackagereferences">true</attribute>
              <attribute name="supportsnowarnlist">true</attribute>
              <attribute name="supportsdocgeneration">true</attribute>
              <attribute name="supportskeycontainer">true</attribute>
              <attribute name="supportskeyfile">true</attribute>
              <attribute name="supportsdelaysign">true</attribute>
              <attribute name="supportslangversion">true</attribute>
            </task>
            <task name="jsc">
              <attribute name="exename">mjs</attribute>
              <attribute name="managed">strict</attribute>
            </task>
            <task name="vbc">
              <attribute name="exename">vbnc</attribute>
              <attribute name="managed">true</attribute>
            </task>
            <task name="resgen">
              <attribute name="managed">true</attribute>
              <attribute name="supportsexternalfilereferences">true</attribute>
            </task>
            <task name="delay-sign">
              <attribute name="exename">sn</attribute>
              <attribute name="managed">true</attribute>
            </task>
            <task name="license">
              <attribute name="hascommandlinecompiler">false</attribute>
            </task>
            <task name="ilasm">
              <attribute name="managed">true</attribute>
            </task>
          </tasks>
        </framework>
        <framework
            name="moonlight-2.0"
            family="moonlight"
            version="2.0"
            description="Moonlight 2.0"
            sdkdirectory="${toolDirectory}"
            frameworkdirectory="${toolDirectory}"
            frameworkassemblydirectory="${toolDirectory}"
            clrversion="2.0.50727"
            clrtype="Browser"
            vendor="Mono"
                    >
          <runtime>
            <modes>
              <auto>
                <engine program="${path::combine(prefix, 'bin/mono')}">
                  <arg value="--runtime=moonlight" />
                  <arg value="--security=temporary-smcs-hack" />
                </engine>
              </auto>
            </modes>
          </runtime>
          <reference-assemblies basedir="${path::combine(prefix, 'lib/mono/2.1')}">
            <include name="Microsoft.VisualBasic.dll" />
            <include name="mscorlib.dll" />
            <include name="System.Core.dll" />
            <include name="System.dll" />
            <include name="System.Net.dll" />
            <include name="System.Runtime.Serialization.dll" />
            <include name="System.ServiceModel.dll" />
            <include name="System.ServiceModel.Web.dll" />
            <include name="System.Windows.Browser.dll" />
            <include name="System.Windows.dll" />
            <include name="System.Xml.dll" />
          </reference-assemblies>
          <task-assemblies>
            <!-- include MS.NET version-neutral assemblies -->
            <include name="extensions/net/neutral/**/*.dll" />
            <!-- include MS.NET 2.0 specific assemblies -->
            <include name="extensions/net/2.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 2.0 specific assemblies -->
            <include name="extensions/common/2.0/**/*.dll" />
          </task-assemblies>
          <tool-paths>
            <directory name="${toolDirectory}" />
            <directory name="${path::combine(prefix, 'lib/mono/2.0')}" />
            <directory name="${path::combine(prefix, 'lib/mono/1.0')}" />
            <!-- unmanaged tools -->
            <directory name="${prefix}/bin" />
          </tool-paths>
          <project>
            <if test="${not pkg-config::exists('mono')}">
              <fail>Unable to locate 'mono' module using pkg-config. Download the Mono development packages from http://www.mono-project.com/downloads/.</fail>
            </if>
            <property name="prefix" value="${pkg-config::get-variable('mono', 'prefix')}" />
            <property name="toolDirectory" value="${path::combine(prefix, 'lib/mono/2.1')}" />
          </project>
          <tasks>
            <task name="csc">
              <attribute name="exename">smcs</attribute>
              <attribute name="managed">true</attribute>
              <attribute name="supportspackagereferences">true</attribute>
              <attribute name="supportsnowarnlist">true</attribute>
              <attribute name="supportsdocgeneration">true</attribute>
              <attribute name="supportskeycontainer">true</attribute>
              <attribute name="supportskeyfile">true</attribute>
              <attribute name="supportsdelaysign">true</attribute>
              <attribute name="supportslangversion">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="hascommandlinecompiler">false</attribute>
            </task>
          </tasks>
        </framework>
      </platform>
    </frameworks>
    <properties>
      <!-- properties defined here are accessible to all build files -->
      <!-- <property name="foo" value = "bar" readonly="false" /> -->
    </properties>
  </nant>
  <!--
        This section contains the log4net configuration settings.

        By default, no messages will be logged to the log4net logging infrastructure.

        To enable the internal logging, set the threshold attribute on the log4net element
        to "ALL".

        When internal logging is enabled, internal messages will be written to the 
        console.
    -->
  <log4net threshold="OFF">
    <appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender">
      <layout type="log4net.Layout.PatternLayout">
        <param name="ConversionPattern" value="[%c{2}:%m  - [%x] <%X{auth}>]%n" />
      </layout>
    </appender>
    <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
      <param name="File" value="${APPDATA}\\NAnt\\NAnt.log" />
      <param name="AppendToFile" value="true" />
      <param name="MaxSizeRollBackups" value="2" />
      <param name="MaximumFileSize" value="500KB" />
      <param name="RollingStyle" value="Size" />
      <param name="StaticLogFileName" value="true" />
      <layout type="log4net.Layout.PatternLayout">
        <param name="ConversionPattern" value="[%c{2}:%m  - [%x] <%X{auth}>]%n" />
      </layout>
    </appender>
    <!-- Setup the root category, add the appenders and set the default level -->
    <root>
      <!-- Only log messages with severity ERROR (or higher) -->
      <level value="ERROR" />
      <!-- Log messages to the console -->
      <appender-ref ref="ConsoleAppender" />
      <!-- Uncomment the next line to enable logging messages to the NAnt.log file -->
      <!-- <appender-ref ref="RollingLogFileAppender" /> -->
    </root>
    <!-- Specify the priority for some specific categories -->
    <!--
        <logger name="NAnt.Core.TaskBuilderCollection">
            <level value="DEBUG" />
        </logger>
        <logger name="NAnt">
            <level value="INFO" />
        </logger>
        -->
  </log4net>
  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <probing privatePath="lib" />
    </assemblyBinding>
    <NetFx40_LegacySecurityPolicy enabled="true"/>
  </runtime>
  <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>
</configuration>


Fonte: Building .NET 4.5 Projects with Nant