問題:基本クラスが別のアセンブリからインターフェイスを実装しているときに、継承されたユーザーコントロールでWindowsフォームデザイナーが機能しません。VS2010:継承されたユーザーコントロールで作業するときにWindowsフォームデザイナの問題を回避するにはどうすればよいですか?
プラットフォーム:VS 2010 SP1、.NET 4.0 Frameworkの
エラー:
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)
私は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:設計者はMyBaseControlのために働く
namespace MyDerivedControlLib
{
using MyBaseControlLib;
public partial class MyControl : MyBaseControl
{
public MyControl()
{
InitializeComponent();
}
}
}
が、それはMyControlとでは動作しません。 MyBaseControlがIMyInterfaceを実装していない場合、デザイナーはMyControlでも動作します。
アイデア?
おかげで、 ロバート
で、このための鍵「ベースクラスは、 『MyBaseControlLib.MyBaseControl』をロードできませんでした。アセンブリが参照されたし、すべてのプロジェクトが構築されていることを確認してください。」ではありませんか..? –
私の(限られた)経験では、VSはユーザーコントロールと、ユーザーが使用しているのと同じソリューションに存在するカスタムコントロールに多くの問題があります。私は私の「利便性の野望レベル」を下げてこれを受け入れ、コントロールのための別個のソリューションを作成すると、ずっとずっと問題を少なくしてきました。その後、私は他のプロジェクトからDLLを参照し、コントロール自体を変更した場合は "ビルド"ではなく "再構築"を使用します。 –