2011-03-21 11 views
16

En Visual Studio 2010 64 bits no puedo diseñar mis formularios.
me siguen dando esta advertencia (y errores):Diseñador de estudio visual en x64 no funciona

Warning 18 
The designer could not be shown for this file because none of the classes within it can be designed. The designer inspected the following classes in the file: 
MainForm --- The base class 'Blah' could not be loaded. Ensure the assembly has been referenced and that all projects have been built. 

Esto sólo ocurre con cuando compilo para x64 x 86 ... en el diseñador trabaja bien.

Solo quiero dejar claro que NECESITO que el proyecto funcione en x64 porque muchos de los componentes del proyecto están compilados en x64 y no funcionarán si los formularios están en x86.

¿Alguien más ha encontrado esto y ha encontrado una solución?

+0

Intente reconstruir la solución. – SLaks

+0

Disculpe si esta es una pregunta tonta, pero ¿está ejecutando Visual Studio en un O/S de 64 bits? Suponiendo que la respuesta es "sí", ¿tiene alguna dependencia (bibliotecas de terceros) que no sea compatible con 64 bits? O, tal vez un control que envuelve un dll nativo (en cuyo caso, necesitará una versión de 64 bits del dll nativo) – JMarsch

+0

Es un sistema operativo de 64 bits, existen dependencias de 64 bits. Todos los componentes son de 64 bits (verificados). Lo único que puedo pensar que no es de 64 bits es quizás algo interno de VS2010. @SLaks - divertido :) ... –

Respuesta

23

Puedo reprogramar su problema creando una aplicación WPF con un control de usuario (ponga el control de usuario en la aplicación wpf, y compile x64).

Aquí es mi conjetura en cuanto a lo que está pasando:
Visual Studio es una aplicación de 32 bits, el diseñador WPF tiene que cargar ensamblados de referencia (que se ve que el comportamiento todo el tiempo cuando se utiliza controles de usuario, donde tener que reconstruir para que el diseñador se actualice). Windows no admite un "thunk" entre 32 bits y 64 bits; debe ser una aplicación de 32 bits o una de 64 bits, sin período, sin compartir.

Como el diseñador de hte WPF es de 32 bits, los conjuntos deben ser de 32 bits.

Aquí hay una posible solución: Diseña tu aplicación con la opción "Cualquier CPU". Esto hará que su código JIT pase a 32 bits en plataformas de 32 bits y 64 bits en plataformas de 64 bits.

  • El diseñador funcionará en "cualquier CPU" porque los conjuntos se jit a 32 bits.
  • Cuando se necesita depurar de 64 bits en concreto, cambiar su configuración de generación de 64 bits (sabiendo que debe volver a "32-bit o 'cualquier CPU' hacer el diseño de formularios)
+1

No es un error de WPF. –

+0

@ Hans Passant: estoy de acuerdo, es el Diseñador de WPF en VS, y es por diseño. Es muy fácil reprogramarlo: comience un nuevo proyecto WPF en VS (deje todos los ajustes por ahora). Agregue un nuevo UserControl (puede dejarlo en blanco). Agregue el control de usuario a su formulario principal. Build (todo bien hasta el momento). Ahora crea un perfil de compilación x64 y una solución de reconstrucción (boom). Vuelva a cambiar a x86 y reconstruya (bien), haga espuma, repita el enjuague. – JMarsch

+3

Por lo que vale, también puedo repro usar los mismos pasos con el diseñador de Winform. Sucede porque el diseñador es una aplicación de 32 bits, y le estamos entregando un ensamblado de solo 64 bits para cargar (porque el control del usuario está en nuestra salida compilada). "Cualquier CPU" es la mejor respuesta. – JMarsch

3

La solución propuesta de Microsoft es mover las clases base a un conjunto separado, compilado usando Cualquier CPU o x86 (si su proyecto real debe ser x64).

Desafortunadamente esto se aplica a todos clases base: si su herencia es FormC: FormB: FormA, entonces ambos FormAyFormB debe estar en una asamblea de 32 bits (externo), si se desea editar FormC en el diseñador .

¡Por supuesto, esto también se aplica a UserControls! Ojalá hubiera sabido esto antes de que nuestro equipo decidiera pasar a 64 bits: un aviso al cambiar las opciones de compilación hubiera sido realmente agradable, Microsoft ...

Cuestiones relacionadas