Foro de elhacker.net

Programación => .NET (C#, VB.NET, ASP) => Mensaje iniciado por: d91 en 25 Enero 2016, 16:43 pm



Título: ayuda con configuracion de aplicaciones de escritorio para x32 y x64
Publicado por: d91 en 25 Enero 2016, 16:43 pm
hola, anteriormente hice una pequeña aplicación que accedia a una base de datos, utilice VS2012 y mi pc tiene Windows 7 32bits, la empaquete en un .exe y lo probe, en mi maquina corrió bien y todo, y pensé que en cualquier maquina de 32 bits iba a funcionar, después intente instalarlo en una maquina con Windows 8 32 bits, instaló pero al abrir la aplicación dejaba de funcionar y se cerraba y casi solo funciona en Windows 7 aunque en algunas da problemas porque se congela y se cierra, aunque este instalado la versión del Framework necesaria en este caso la 4.5, he googleado un poco y ahora me doy cuenta que la configuración por defecto que tiene es la Any CPU, y veo que puedo elegir directamente entre x32 y x64, pero no se si de esta manera podre estar seguro que mi aplicación correrá correctamente en cualquier maquina al instalarla, agradezco la orientación para configurar bien mis aplicaciones


Título: Re: ayuda con configuracion de aplicaciones de escritorio para x32 y x64
Publicado por: Eleкtro en 25 Enero 2016, 16:59 pm
La configuración Any CPU es el modo "Neutro" de compatibilidad para equipos de 32 y 64 Bits, esto quiere decir que un executable compilado en modo Any CPU se iniciará como un proceso de 64 bits en Windows de 64 Bits, y viceversa en Windows de 32 bits, sin embargo, si se utiliza el modo Any CPU y se tiene referenciado algún ensamblado compilado unicamente en modo de 64 Bits entonces ocurriría un problema en un Windows de 32 Bits al intentar iniciar el executable (mejor dicho al momento de intentar cargar el ensamblado, que no tiene por que ser al inicio).

Pero ese no parece ser tu caso ya que dices haber programado la solución de Visual Studio y haberla testeado en un Windows x86 (o eso entendí), por ende, perfectamente puedes cambiar a modo de compilación para 32 Bits y el executable resultante se iniciará como un proceso de 32 Bits en Windows de 32 Bits y lo mismo en Windows de 64 Bits (modo WOW64).

Aparte, si no se hace nada "extraño" en tiempo de ejecución entonces generalmente el programa directamente no se podría iniciar por incompatibildiad de hardware (me refiero a intentar iniciar una app x64 bajo x86), y también puedes descartar que la congelación sea un problema de arquitectura, sino más bien de "saturación" del thread de la UI y/o un bug por parte del programador o de algún control y/o librerías de terceros tal vez, algo que esté causando un colapso de datos como por ejemplo una asignación excesiva de RAM que ralentice la app, o un mal funcionamiento en general.

En mi opinión el problema que sufres no tiene nada que ver con el modo de arquitectura seleccionado, de todas formas elige el modo de 32 Bits para comprobarlo, pero intenta hallar otra causa al problema depurando los controladores de eventos en donde crees que se cierra o se congela la app en ese otro Windows. Tampoco has especificado si se mostró algún mensaje de error específico cuando intentaste iniciar la app, ni diste información relevante sobre el código.

Ten en cuenta también que hay ciertas "metodologías" en el uso de los miembros de la librería de classes de .Net Framework las cuales podrían generar excepciones al intentar usarlos desde un executable compilado en 32 Bits, como sería por ejemplo la utilización de varias de las propiedades de la class System.Diagnostics.Process para acceder a información específica de executables de 64 Bits bajo tu ensamblado de 32 Bits, ten cuidado con pequeñas cosas como la que acabo de mencionar.

Saludos!


Título: Re: ayuda con configuracion de aplicaciones de escritorio para x32 y x64
Publicado por: d91 en 26 Enero 2016, 12:34 pm
bueno, entonces tal vez si sea sobre las librerías, la primera vez que use .NET, hice un programita con los eventos keypress y solo utilice un serialPort para comunicarme con un arduino y ese ejecutable  corrió bien en Windows 7 y 8, donde empece a tener algunos problemas fue al utilizar dll de OracleDataAccess y de SqlClient para acceder a bases de datos, donde a veces el programa si instala pero al lanzarlo se detiene y aparace el mensaje: El programa xxx ha dejado de funcionar.