Problema: el diseñador de Windows Forms no funciona para un control de usuario heredado cuando la clase base está implementando una interfaz desde otro ensamblado.VS2010: ¿Cómo evitar los problemas de diseñador de Windows Forms cuando se trabaja con controles de usuario heredados?
Plataforma: VS 2010 SP1, .NET 4.0 Marco
error:
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: MyControl --- The base class 'MyBaseControlLib.MyBaseControl' could not be loaded. Ensure the assembly has been referenced and that all projects have been built.
at System.ComponentModel.Design.Serialization.CodeDomDesignerLoader.EnsureDocument(IDesignerSerializationManager manager) at System.ComponentModel.Design.Serialization.CodeDomDesignerLoader.PerformLoad(IDesignerSerializationManager manager) at Microsoft.VisualStudio.Design.Serialization.CodeDom.VSCodeDomDesignerLoader.PerformLoad(IDesignerSerializationManager serializationManager) at Microsoft.VisualStudio.Design.Serialization.CodeDom.VSCodeDomDesignerLoader.DeferredLoadHandler.Microsoft.VisualStudio.TextManager.Interop.IVsTextBufferDataEvents.OnLoadCompleted(Int32 fReload)
tengo una solución con proyectos de biblioteca de clase 3:
MyInterfaceLib:
namespace MyInterfaceLib
{
public interface IMyInterface
{
void Foo();
}
}
MyBaseControlLib:
namespace MyBaseControlLib
{
using System.Windows.Forms;
using MyInterfaceLib;
public partial class MyBaseControl : UserControl, IMyInterface
{
public MyBaseControl()
{
InitializeComponent();
}
public void Foo()
{
}
}
}
MyDerivedLib:
namespace MyDerivedControlLib
{
using MyBaseControlLib;
public partial class MyControl : MyBaseControl
{
public MyControl()
{
InitializeComponent();
}
}
}
Aunque el diseñador trabaja para MyBaseControl que no funciona para MyControl. Si MyBaseControl no implementa IMyInterface, el diseñador también trabaja para MyControl.
¿Alguna idea?
Gracias, Robert
no es la clave para esto en "La clase base 'MyBaseControlLib.MyBaseControl' no se pudo cargar. Asegúrese de que el montaje se ha hecho referencia y que se han construido todos los proyectos." ..? –
En mi experiencia (limitada), VS simplemente tiene muchos problemas con los controles del usuario y los controles personalizados que viven en la misma solución donde los está consumiendo. Siempre he tenido muchos menos problemas cuando reduzco mi "nivel de ambición de conveniencia" y acepto esto, y creo una solución separada para los controles. Luego, solo hago referencia al archivo DLL de los otros proyectos y uso "rebuid" en lugar de "compilar" si modifico los controles. –