Problema: la finestra di progettazione di Windows Form non funziona per un controllo utente ereditato quando la classe base sta implementando un'interfaccia da un altro assembly.VS2010: Come evitare problemi di progettazione di Windows Form quando si lavora con controlli utente ereditati?
Piattaforma: VS 2010 SP1, .NET Framework 4.0
Errore:
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)
ho una soluzione con i progetti di libreria 3 Classe:
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();
}
}
}
Anche se il progettista lavora per MyBaseControl non funziona per MyControl. Se MyBaseControl non implementa IMyInterface, il designer funziona anche con MyControl.
Qualche idea?
Grazie, Robert
non è la chiave di questo in "La classe di base 'MyBaseControlLib.MyBaseControl' non potrebbe essere caricato. Assicurarsi che il montaggio è stato fatto riferimento e che sono stati costruiti tutti i progetti." ..? –
Nella mia (limitata) esperienza, VS ha solo un sacco di problemi con controlli utente e controlli personalizzati che vivono nella stessa soluzione in cui li stai consumando. Ho sempre avuto meno problemi quando ho abbassato il mio "livello di ambizione di convenienza" e l'ho accettato, e ho creato una soluzione separata per i controlli. Quindi faccio riferimento alla DLL dagli altri progetti e uso "rebuid" piuttosto che "build" se ho modificato i controlli stessi. –