2010-01-27 16 views
24

Estoy trabajando en algunos proyectos de C# con Visual Studio 2005, y estoy tratando de cambiar el objetivo de la plataforma de x86 a cualquier CPU. Ya revisé todas las dependencias que conozco y me aseguré de que también se hayan creado para cualquier CPU que utilice la herramienta corflags.Cambiar un proyecto de Visual Studio C# de x86 a cualquier CPU

Cuando cambio el objetivo de la plataforma en Visual Studio 2005 parece que guarda el cambio, pero cuando construyo el proyecto todavía usa x86. La próxima vez que abra el proyecto, el objetivo de la plataforma se ha restablecido a x86.

Esto solo ocurre para algunos de los proyectos en la solución, ¿esto significa que hay otras dependencias de 32 bits en alguna parte?

Puedo ejecutar manualmente el compilador de C# en la línea de comandos con /platform:anycpu y no me sale un error, pero no estoy seguro de que sea lo correcto y me gustaría poder construir dentro Estudio visual.

¿Qué puedo hacer para resolver este problema?

+2

¿Está seguro de haber cambiado el destino de la plataforma en todas las configuraciones (es decir, tanto en la configuración de depuración como de versión)? –

+2

No creo que VS se preocupe por las dependencias. He podido construir proyectos AnyCPU que tenían dependencias de 32 bits, que se bloquean rápidamente (y de forma apropiada) cuando el DLL ha intentado cargar. Ve con la sugerencia de divo. –

+0

Cambié el objetivo de la plataforma en todas las configuraciones, y todavía ejecuta el compilador con/platform: x86 y no guarda el cambio en el proyecto. – WildCrustacean

Respuesta

21

Asegúrese de que ha cambiado tanto la Plataforma configuración y la Plataforma de destino a Any CPU. Si todo lo demás falla, puede abrir el .csproj y cambiar manualmente las referencias. Haga clic con el botón derecho en el Proyecto, vaya a Descargar proyecto. A continuación, haga clic derecho y vaya a Edit MyProject.csproj. Las propiedades para el proyecto aún pueden incluir la Plataforma por defecto como x86:

<PropertyGroup> 
    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> 
    <Platform Condition=" '$(Platform)' == '' ">x86</Platform> 

Ten en cuenta también el caso en que la solución todavía tiene la configuración x 86 en el Administrador de configuración. He encontrado algunas Soluciones complejas con múltiples proyectos que tienen configuraciones diferentes. Tengo que pasar mucho tiempo en Configuration Manager para que todo funcione correctamente.

+0

había cambiado tanto la plataforma de configuración como el objetivo de la plataforma, y ​​aun así no guardaba el cambio. Pude editar el archivo .csproj y hacerlo de esa manera, así que creo que esto es lo que estaba buscando en este punto. Que se ejecute o no realmente es otra historia. Sigo teniendo la sensación de que esto podría tener que ver con dependencias que no veo como objetivo para otras plataformas, pero es difícil de decir. – WildCrustacean

+0

Encontré este intento de resolver el mismo problema ... Finalmente descubrí que incluso si un proyecto está configurado para depurar, por ejemplo, Depurar/Cualquier CPU en la configuración de la solución para Depurar/Cualquier CPU, la página de propiedades del proyecto, 'compilación' 'pestaña, le permite elegir una plataforma de destino para' Depurar/Cualquier CPU '. En mi caso, 'Debug/Any CPU' apuntaba explícitamente a x86, y cuando compilé el proyecto para Debug/Any CPU, la DLL resultante se compiló explícitamente para x86 ... lo que causó errores de formato no válido cuando se cargó en un entorno x64. Y hubo mucho 'wtf?' ser tenido. –

+1

Solo para aclarar, no estoy hablando de la configuración de Configuration Manager ... hay dos lugares en los que potencialmente puede especificar mal la configuración. El administrador de soluciones le permite configurar el proyecto en 'Release/x64' para la configuración 'Debug/Any CPU' ... la pestaña de compilación de las propiedades del proyecto le permite decir que 'Release/x64' se dirige a la plataforma x86. ¿Confundido todavía? –

-6

No podrá hacer esto para un proyecto administrado y creo que esa configuración es irrelevante para los proyectos administrados, ya que deberían ejecutarse en cualquier CPU realmente.

+0

¿Qué quiere decir con "proyecto administrado"? Por lo que entiendo, debería ser capaz de construir mis ensamblajes como x86, x64 o anycpu, cambiando la configuración de destino de la plataforma en las propiedades de compilación. – WildCrustacean

+6

-1, la configuración es relevante para proyectos administrados si utilizan archivos DLL no administrados. – user7116

+0

No pensé en x86 ni en x64. Pensaba que solo el código administrado puro – gyurisc

Cuestiones relacionadas