.net build .net-4.0 nant

Construcción de proyectos.NET 4 con Nant



build .net-4.0 (8)

¿Cómo puedo comenzar a construir proyectos que se dirijan al Framework .NET 4.0?


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

Descargué el tiempo de ejecución vs2010 y .net 4. 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 , ... pegué el texto y cambié todo el texto de v4.0.20506 a v4.30319 y agregué texto a NAnt.exe.config.

Luego actualicé mi script nant para

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

esto para que mi script nant del proyecto use el compilador .net 4

Y esto me dio una versión nant con el binario .net 4 ...

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 de framework que se agrega a la configuración de nants. Además, parece que nant0.9 encuentra las bibliotecas .net de manera diferente, ya que tuve que agregar algo como esto a mi nant build.xml ...

<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" />


Esto es bastante similar a estas preguntas / problemas:

<msbuild> tarea o msbuild.exe con NAnt?

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

<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>


NAnt 0.86 y más tarde se ejecuta fuera de la caja. Al escribir esto, estoy usando 0.91.

Cuando descargue desde la red, recuerde " unblock " el archivo zip (restablecer la zona de seguridad) antes de desempacar.


Si desea usar nant para crear proyectos que tengan como objetivo .NET 4.0, deberá modificar NAnt.exe.config y agregar el marco de destino de net-4.0 y agregar una línea <supportedRuntime ... /> a la sección <startup >.


Solo para poner la información allí para poder encontrarla de nuevo, para construir proyectos C ++ sin modificar la variable de entorno PATH y crear variables LIB / LIBPATH / INCLUDE o ejecutar nant desde vsvars32, algo así se necesita en el archivo de configuración de 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 ...


Tuve un problema similar para 4.5, esto resolvió mi problema:

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

Tengo una máquina de 64 bits, pero .net está instalada 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.

He reemplazado:

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

con este:

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


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 por un día completo, estudiando los registros "detallados" y "de diagnóstico", pero todo lo que hice fue apuntando 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 archivos de recursos en el segundo enlace ( foros asp.net ) 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 allá.