Pregunta Desarrollar el proyecto x64 c # con resultados de msbuild en objetivos de 32 bits


Estoy usando Visual Studio 2010 para construir un proyecto de c # que tenga objetivos x86 y x64. Cuando compilo utilizando el IDE, obtengo el resultado correcto de los objetivos x64 y x86.

Cuando uso msbuild en la línea de comando, obtengo todo construido en x86, aunque especifico x64 en la línea de comando.

No tuve este problema hasta que actualicé de .Net 4.0 a .Net 4.5.

Con .Net 4.0 pude obtener mis objetivos x64 incluso si especificé x86 en la línea de comandos.

Hice una compilación en el entorno .Net 4.0 y luego otra compilación en el entorno .Net 4.5 e introduje el resultado en archivos de registro. Noté algunas diferencias en los archivos de registro pero creo que esto es lo que está causando mi problema:

En .Net 4.0 veo esta línea en el archivo de registro:

/reference:C:\Windows\Microsoft.Net\assembly\GAC_MSIL\Microsoft.CSharp\v4.0_4.0.0.0__b03f5f7f11d50a3a\Microsoft.CSharp.dll

En .Net 4.5 veo esta línea en el archivo de registro: / r: "C: \ Archivos de programa (x86) \ Assemblies de referencia \ Microsoft \ Framework.NETFramework \ v4.0 \ Microsoft.CSharp.dll"

¿Algunas ideas? Se ve .Net 4.5 está utilizando una ruta específica de x86.


6
2018-04-01 15:38


origen


Respuestas:


Esto podría suceder si la configuración x64 de su solución está configurada para construir un proyecto como AnyCPU. Una nueva opción de configuración en .Net 4.5, Prefiero 32 bits, hace que los ejecutables con el indicador Prefer32bit se inicien como procesos de 32 bits en una máquina de 64 bits. Como la marca Prefer32bit es la predeterminada en los objetivos de MSBuild, verá el comportamiento que describe, es decir, la actualización de .Net 4.0 a .Net 4.5 tendrá su proyecto AnyCPU para cambiar de 64 a 32 bits.

Para hacer un proyecto (no solución) construido para x64, especifíquelo en la línea de comando:

msbuild project.csproj /p:Platform=x64

Observe que la línea de comandos es para .csproj, no para .sln.

Alternativamente, verifique la configuración de su solución en Configuration Manger y asegúrese de que se construya como x64.


5
2018-04-02 03:34



Preguntas populares