2009-04-09 6 views
11

Usamos msbuild para construir nuestra aplicación .NET en un servidor dedicado a compilaciones. Estamos migrando a un nuevo hardware que tiene Windows 2003 de 64 bits. Puedo construir la aplicación usando la versión de 64 bits de msbuild que se encuentra en Framework64 o puedo construirlo usando la versión de 32 bits que se encuentra en Framework. ¿Hay alguna ventaja en construir con la versión de 64 bits de msbuild?¿Hay alguna ventaja al construir mi aplicación .NET con el framework de 64 bit?

Respuesta

10

No particularmente no. La única ventaja real es que la versión de 64 bits de msbuild podrá aprovechar más espacio de direcciones. Eso es realmente al respecto.

+2

No relacionado (y puede justificar su propia pregunta), pero ¿hay alguna razón para saber que el 32Bit msbuild.exe se compilaría correctamente pero la versión de 64 bits fallaría con System.AccessViolationException? –

+2

Me he encontrado con lo mismo. Framework64/Msbuild falla en GenerateSerializationAssemblies, con una excepción de falta de memoria. –

2

No, pero puede haber algunas desventajas ... si su aplicación utiliza controladores de terceros, asegúrese de que también sean compatibles con 64 bits. Nos encontramos con un problema donde convertimos una aplicación anterior a .net y mantuvimos la configuración predeterminada de 'Plataforma objetivo: Cualquier CPU' en Build-> General y mientras la aplicación funcionó muy bien en su máquina de desarrollo tan pronto como la cambiamos a un servidor de 64 bits murió. Nos llevó un tiempo rastrearlo hasta un controlador ODBC de terceros que necesitamos para interactuar con una fuente de datos externa. La aplicación DID funcionaba en la plataforma de 64 bits, solo necesitábamos especificar x86 para la CPU que de alguna forma frustra el propósito.

0

Los ensamblados de interoperabilidad Biztalk son un buen ejemplo de ensambles que NO son aptos para 64 bits. Así que prueba y prueba nuevamente cuando/después de hacer tal movimiento.

+2

No estaba preguntando si debería ejecutar mi aplicación en el marco de 64 bits. Me preguntaba si había alguna ventaja al usar el marco de 64 bits, el msbuild.exe en Framework64, para construir mi aplicación. –

1

si va a hacer asp.net una gran ventaja es que IIS puede acceder a más memoria, esto le da más escalabilidad.

El punto no rocas chicos hicieron un espectáculo en este
http://www.dotnetrocks.com/default.aspx?showNum=341

hay una gran cantidad de muy buena información sobre el mismo.

+4

No estaba preguntando si debería ejecutar mi aplicación en el marco de 64 bits. Me preguntaba si había alguna ventaja al utilizar el marco de 64 bits, msbuild.exe en Framework64, para construir mi aplicación. –

+0

sí, obtiene más memoria si ejecuta su aplicación en un entorno de 64 bits cuando es una aplicación de 32 bits, pero obtiene aún más cuando la compila en 64 bits –

1

Si MSBuild está ejecutando pruebas que tienen dependencias en bibliotecas x64; o si, de lo contrario, su proceso de compilación requiere cargar bibliotecas x64 nativas, necesita usar msbuild x64.

Tuvimos que usar msbuild x64 porque estábamos ejecutando las pruebas de xunit, y algunas de nuestras bibliotecas tenían para ser x64 porque llaman libs nativas x64.

En teoría, podríamos haber utilizado un corredor de prueba diferente para iniciar un proceso x64 para ejecutar pruebas; pero usar msbuild x64 es más fácil.

Como se señala en https://xunit.github.io/docs/running-tests-in-msbuild.html:

Puede utilizar una tarea <exec> en MSBuild para ejecutar el corredor de la consola. Puede optar por usar el corredor de la consola si necesita más control sobre la ejecución de pruebas en entornos de 32 contra 64 bits. Al utilizar el corredor MSBuild, está restringido a la opción de bitness del ejecutable MSBuild que utilizó para ejecutar su compilación.

Tenga en cuenta que esto no tiene nada que ver con la compilación: podríamos haber construido nuestro proyecto x64-only utilizando msbuild x86.

Cuestiones relacionadas