VS 2008中表单设计器的问题?

时间:2009-05-20 09:23:15

标签: .net winforms visual-studio-2008

我们遇到了几个加载项目的情况,否则就可以在Winforms设计器中给出错误:

无法加载文件或程序集“MyLibrary,Version = 1.4.3419.14461,Culture = neutral,PublicKeyToken = null”或其依赖项之一。系统找不到指定的文件。

Visual Studio死机,提示我们是否希望向Microsoft发送调试信息 - 如果忽略此提示,我们可以关闭受影响的选项卡,保存所有内容,并且重新加载一切正常;如果我们不关闭受影响的标签,问题就会重复。

我不确定这是否是Visual Studio错误,或者我们正在做一些“错误”或意外的事情。有没有人对这种问题的看法或常见原因有任何想法?

(为了论证,该解决方案由MyLibrary和MyLibrary.Windows组成,它有一个前者的项目引用。一旦Visual Studio加载,两个项目都没有问题。如果它有任何区别,那么项目已经被从VS2003迁移,后者反过来没有出现这种崩溃)

修改

还尝试使用附加的调试器加载解决方案,并加载解决方案,并在不停止任何异常的情况下崩溃

3 个答案:

答案 0 :(得分:3)

之前我见过这种崩溃,是因为在自定义用户控件上公开属性,这些属性不是Visual Studio设计人员已经支持过的简单类型或结构。

例如(从袖口上写下的代码来说明):

public class MyUserControl : UserControl
{
    // This will be fine.
    public int RowCount { get; set; }

    // This will cause problems
    public CustomerEntity DisplaySubject { get; set; }
}

似乎发生的事情是,设计师试图从设计器“代码”(在单独的文件中)反序列化,并且在所有意外类型中进行混淆。

解决问题的一种方法是不使用自定义类型公开属性,但这在(ahem)主席界面中很难。

另一种方法是使用DesignerSerializationVisibility属性标记属性,指定隐藏(不要在初始化代码中保留)。

如果你很勇敢,你可以考虑使用DesignerSerialization属性自己控制序列化,但你不太可能需要它。

答案 1 :(得分:1)

您可以尝试:

  • 清理解决方案并进行完全重建
  • 删除有问题的引用并重新添加
  • 清理解决方案并再次执行完全重建
  • 重新启动Visual Studio
祝你好运

修改

还尝试将引用的dll特定版本设置为false并重新加载解决方案。见http://channel9.msdn.com/forums/TechOff/261335-Dreadful-Visual-Studio-2008-crash-Solved/?CommentID=392089

答案 2 :(得分:0)

你有一个控制器对其父形式做出假设吗?当表单设计器加载表单时,它会创建控件的实例,但不会创建表单类的实例。

因此,如果您的某个控件仅依赖于您的表单类作为其父类进行实例化,则在加载到表单设计器时它可能会崩溃。