我创建了一个具有设计时支持的自定义用户控件,如下所示:

项目/程序集“ MyUserControl”


MyUserControl.cs
MyUserControlDesigner.cs


代码是这样的:

namespace MyUserControl
{
  [Designer("MyUserControl.Design.MyUserControlDesigner, MyUserControl", typeof(IDesigner))]
  public class MyUserControl : Control
  {
    // Some stuff here
  }
}

namespace MyUserControl.Design
{
  public class MyUserControlDesigner : ControlDesigner
  {
    // Some other stuff here
  }
}


只要这两个类在同一程序集中,一切就可以正常工作。 VS2012显示了我所有的设计师选项。但是出于明显的原因(参考System.Design等),我不想在MyUserControl程序集中使用设计器代码,而在MyUserControl.Design中。所以我在相同的解决方案中创建了第二个项目:

项目/程序集“ MyUserControl”


MyUserControl.cs


项目/程序集“ MyUserControl.Design”


MyUserControlDesigner.cs


代码是这样的:

namespace MyUserControl
{
  [Designer("MyUserControl.Design.MyUserControlDesigner, MyUserControl.Design", typeof(IDesigner))]
  public class MyUserControl : Control
  {
    // Some stuff here
  }
}


使用此功能时,根本找不到设计器。 VS2012不会显示可在线选择的组件,但类似于未附加设计器的组件。

我是否必须将设计器程序集添加到GAC中才能让VS2012找到它,或者这是什么问题?

编辑:将对MyUserControl.Design的引用添加到WindowsFormsApplication1时,一切正常,但这正是您不想要的...

最佳答案

您需要将MyUserControlDesigner设置为公共课程。

10-02 00:02