2009-08-01 7 views

Respuesta

13

Si desea utilizar nante para construir proyectos dirigidos a .NET 4.0 que tendrá que modificar NAnt.exe.config y añadir el marco objetivo neto-4.0 y añadir una línea a la <supportedRuntime ... />> sección <startup.

2

Esto es bastante similar a estas preguntas/problemas:

<msbuild> task or msbuild.exe with NAnt?

Otra opción sería llamar directamente a partir de un bloque de MSBuild.

<property name="MSBuildPath" value="C:\WINDOWS\Microsoft.NET\Framework\v4.0\MSBuild.exe" />  

<target name="build"> 
    <exec program="${MSBuildPath}"> 
      <arg line='"${SolutionFile}"' /> 
      <arg line="/property:Configuration=${SolutionConfiguration}" /> 
      <arg value="/target:Rebuild" /> 
      <arg value="/verbosity:normal" /> 
      <arg value="/nologo" /> 
      <arg line='/logger:"C:\Program Files\CruiseControl.NET\server\ThoughtWorks.CruiseControl.MsBuild.dll"'/> 
    </exec> 
</target> 
23

2010 15 de abril de ... Actualice la respuesta correcta anterior de Eugene, después de que se publicaron .net 4 y vs2010.

He descargado vs2010 y .net 4 runtime. La versión de producción parece ser v4.30319 es decir, (C: \ WINDOWS \ Microsoft.NET \ Framework v4.0.30319 \)

Después de revisar http://paigecsharp.blogspot.com/2009/08/nant-net-framework-40-configuration.html, ... me pega en el texto y cambie todo el texto de v4 .0.20506 a v4.30319 un texto agregado a NAnt.exe.config.

entonces he actualizado mi guión a Nant

<property name="nant.settings.currentframework" value="net-4.0" />, 

esto para mi guión Nant proyecto utiliza el compilador .NET 4

Y esto me hizo un Nant Construir con .NET 4 binaria ....

Actualización 2010-06-14: Lo anterior fue respondido con nant-0.85, actualicé a nant-0.90 y tuve que agregar vendor="Microsoft" al atributo framework que se agrega a nants config. Además, parece que nant0.9 encuentra las bibliotecas .NET de manera diferente, ya que tenía que añadir algo como esto a mi build.xml Nant ...

<property name="framework-get-assembly-directory" value="${framework::get-assembly-directory('net-4.0')}" /> 
<property name="dotNetReferenceAssemblyPath" value="${framework-get-assembly-directory}\" /> 

y

<include name="${dotNetReferenceAssemblyPath}System.ComponentModel.DataAnnotations.dll" /> 
+0

La actualización de la versión de NAnt a la última versión disponible (actualmente 0.91 Alpha 2) fue necesaria para que esto funcione (además de los cambios de compilación y configuración). Por cierto, no necesitaba el último . – Catch22

0

Sólo para poner la información allí, así que podría encontrar de nuevo, para construir proyectos de C++, sin modificar la variable PATH environement y la creación de LIB/LIBPATH/incluir variables o Nant que va desde vsvars32, se necesita algo así en el archivo de configuración Nant:

<project> 
    <readregistry 
     property="WindowsSdkDir" 
     key="SOFTWARE\Microsoft\Microsoft SDKs\Windows\v7.0A\InstallationFolder" 
     hive="LocalMachine" 
     failonerror="true" /> 

    <readregistry 
     property="installRoot" 
     key="SOFTWARE\Microsoft\.NETFramework\InstallRoot" 
     hive="LocalMachine" /> 
    <readregistry 
     property="sdkInstallRoot" 
     key="SOFTWARE\Microsoft\Microsoft SDKs\Windows\v7.0A\WinSDK-NetFx40Tools\InstallationFolder" 
     hive="LocalMachine" 
     failonerror="false" /> 
    <readregistry 
     property="vs10Win32Tools" 
     key="SOFTWARE\Microsoft\Microsoft SDKs\Windows\v7.0A\WinSDK-Win32Tools\InstallationFolder" 
     hive="LocalMachine" 
     failonerror="false" />  
    <readregistry 
     property="vcInstallDir" 
     key="SOFTWARE\Microsoft\VisualStudio\10.0\Setup\VC\ProductDir" 
     hive="LocalMachine" 
     failonerror="true" /> 
    <readregistry 
     property="vs10dbghelp" 
     key="SOFTWARE\Microsoft\VisualStudio\10.0\Setup\Dbghelp_path" 
     hive="LocalMachine" 
     failonerror="true" /> 

    <setenv name="PATH" value="${path::combine(vcInstallDir, 'bin')};${vs10dbghelp};${sdkInstallRoot};${vs10Win32Tools};${environment::get-variable('PATH')};" /> 
    <setenv name="INCLUDE" value="${path::combine(WindowsSdkDir, 'include')};${path::combine(vcInstallDir, 'atlmfc/include')};${path::combine(vcInstallDir, 'include')};${environment::get-variable('INCLUDE')}" /> 
    <setenv name="LIB" value="${path::combine(WindowsSdkDir, 'lib')};${path::combine(vcInstallDir, 'atlmfc/lib')};${path::combine(vcInstallDir, 'lib')};${environment::get-variable('LIB')}" /> 
    <setenv name="LIBPATH" value="${path::combine(installRoot, 'v4.0.30319')};${path::combine(installRoot, 'v3.5')};${path::combine(WindowsSdkDir, 'lib')};${path::combine(vcInstallDir, 'atlmfc/lib')};${path::combine(vcInstallDir, 'lib')};${environment::get-variable('LIBPATH')}" /> 
</project> 

La ruta de registro es la de VS2010 ya que el SDK correspondiente está tomando su tiempo ...

1

Utilicé todas las respuestas anteriores y todavía encontré algunos errores de compilación raros: "error MSB6006:" AL.exe "salió con el código 128 ". El error no fue útil en absoluto. Busqué en Google y obtuve algunas respuestas. Aquí están los enlaces: msdn help y asp.net forums

Luché con ese error durante un día completo, estudiando los registros "detallados" y "de diagnóstico", pero todo lo que hice fue apuntarme al ensamblado que falló en la construcción. Sin error específico Ni siquiera pude duplicarlo en mi caja local.Finalmente, decidí probar la sugerencia sobre la convención de nombres de los archivos de recursos en el segundo enlace (asp.net forums) y ... ¡aleluya! mi build comenzó a funcionar. No sé qué pasa con la compilación que falla debido al nombre del recurso, todavía estoy trabajando en eso, pero mi objetivo inmediato era lograr que la construcción funcionara.

Espero que esto ayude a alguien más por ahí.

1

NAnt 0.86 y versiones posteriores se ejecuta fuera de la caja. Al escribir esto, estoy usando 0.91.

Al realizar la descarga desde la red, recuerde "unblock" el archivo zip (restablecer la zona de seguridad) antes de desempacar.

0

tuve problema similar de 4,5, esta solucionado mi problema:

http://www.donnfelker.com/nant-sdkinstallroot-has-not-been-set/

Tengo una máquina de 64 bits, pero .NET se instala como de 32 bits. El sdkInstallRoot no puede encontrar la ruta correcta. Revisé mi editor de registro para encontrar la ruta correcta y reemplacé la entrada en nant.exe.config.

que sustituyen:

<locatesdk property="sdkInstallRoot" minwinsdkver="v7.0A" minnetfxver="4.0" maxnetfxver="4.0.99999" failonerror="false" /> 

con esto:

<readregistry 
          property="sdkInstallRoot" 
          key="SOFTWARE\Wow6432Node\Microsoft\Microsoft SDKs\Windows\v8.0A\WinSDK-NetFx40Tools\InstallationFolder" 
          hive="LocalMachine" 
          failonerror="false" />