.net - solucion - visual studio no compila cambios
Cómo resolver el problema del Diseñador de formas de Windows VS2010(no se pudo cargar la clase base) (7)
- Proyecto limpio (no estoy seguro si esto es necesario)
- Establecer compilación para liberar
- Proyecto de reconstrucción
El diseñador de formularios no reconstruirá los formularios que editó manualmente si crea el proyecto en modo de depuración aparentemente.
Recientemente he estado recibiendo un error en el diseñador de formularios de Windows de VS2010SP1 al usar UserControls heredado.
El error es
No se pudo mostrar el diseñador para este archivo porque no se puede diseñar ninguna de las clases que contiene. El diseñador inspeccionó las siguientes clases en el archivo: DebugPanel --- La clase base ''UI.Panels.PanelBase'' no se pudo cargar. Asegúrese de que se haya hecho referencia al ensamblaje y que se hayan construido todos los proyectos.
PanelBase es un UserControl que se define en la misma biblioteca de clases que DebugPanel que también implementa una interfaz IPanel (que a su vez se define en la misma biblioteca de clases). IPanel implementa una interfaz IBaseItem que se define en una biblioteca de clases diferente.
Entonces tenemos
DebugPanel (Library UI.Shared2)
- PanelBase (Library UI.Shared2)
- UserControl (System.Windows.Forms - .NET4)
- IPanel (Library UI.Shared2)
- IBaseItem (Library Net.Common)
PanelBase se puede diseñar correctamente, el proyecto se compila correctamente y funciona, pero cuando intento diseñar un control heredado, el diseñador falla. Esto no se limita al control DebugPanel, sino a cualquier control heredado de PanelBase ... También he visto el problema con otros controles que uso que tienen jerarquías de herencia similares.
Por lo general, puedo resolver el problema temporalmente al limpiar la interfaz de usuario de la biblioteca.Shared2, cerrar VS y luego volver a abrirlo, reconstruir la solución y abrir el diseñador. Esto funcionará por un corto tiempo y luego volverá a fallar.
¿Alguien tiene alguna sugerencia que pueda resolver este problema de forma permanente sin tener que recurrir al reinicio de VS?
Edición: estoy apuntando a la versión completa de .NET 4 con todas las bibliotecas.
He estado teniendo este problema mucho recientemente, encontré una solución fácil y rápida y decidí compartirlo (funciona para mí en VS 2012).
Cuando tienes un formulario como este:
public partial class MyForm : MyBaseForm
y el diseñador no puede diseñar MyBaseForm
diciendo que the base class ''System.object'' cannot be designed
, todo lo que tengo que hacer es eliminar : MyBaseForm
y revertir (Retroceso> Ctrl + Z). El diseñador llegará a sus sentidos entonces.
public partial class MyForm : MyBaseForm // The designer has trouble with this
public partial class MyForm // Force an error
public partial class MyForm : MyBaseForm // Revert back, the designer should now work again
Todo lo que queda por hacer ahora es esperar a que Microsoft arregle ese error molesto.
Para agregar a esta extensa lista de problemas que podrían causar este error, parece que la herencia de un tipo genérico o una clase abstracta puede perjudicar al diseñador.
Sugeriría poner tu clase base en un proyecto separado. Como obviamente sabe, el problema es que VS está perdiendo el rastro de cierta información meta, que puede obtener al salir y reconstruir. Si la clase base está en un proyecto separado, es más probable que una limpieza / reconstrucción la actualice.
También descubrí que cuando intenta diseñar un formulario que puede tener bibliotecas de referencia que ya están en uso, no se puede diseñar.
A menudo ejecuto varias instancias de Visual Studio. Si dejo una instancia de VS ejecutando un programa en modo de depuración, y ese programa comparte una biblioteca con la instancia de Visual Studio en la que estoy tratando de diseñar, entonces me encuentro con este problema. También puede ser tan simple como la DLL a la que hace referencia el diseñador.
Una vez que cierre el programa que está bloqueando los archivos de la biblioteca, el diseño vuelve a la normalidad.
Tuve el mismo problema. Tenía un objeto Forma / objeto base del cual estaba heredando, y de repente veo este mensaje para todas las Formas que heredaban de la Base.
Intenté dar marcha atrás y descubrir qué ha cambiado recientemente y recordé que configuré mi proyecto Platform Target de Cualquier CPU en x64. Lo cambié de nuevo a Cualquier CPU y el problema se resolvió, y luego volver a establecerlo en x64 aún mantenía el problema solucionado.
Esto fue en VS 2013, por cierto.
Tuve este error con VS2015, intenté limpiar / reconstruir pasos, la versión en compilación no funcionó.
Puse el control base en otro proyecto y el diseñador se quejó de que no había un constructor para ello. Tuve un constructor con 2 argumentos, pero ninguno vacío. Agregué un constructor vacío y el diseñador trabajó. Luego, volví a mover el control base en su ubicación original con los controles derivados, y el error del diseñador regresó.
Me di por vencido y solo puse el control base en un proyecto "VsBug", parece estar contento ...