我们遇到了几个加载项目的情况,否则就可以在Winforms设计器中给出错误:
无法加载文件或程序集“MyLibrary,Version = 1.4.3419.14461,Culture = neutral,PublicKeyToken = null”或其依赖项之一。系统找不到指定的文件。
Visual Studio死机,提示我们是否希望向Microsoft发送调试信息 - 如果忽略此提示,我们可以关闭受影响的选项卡,保存所有内容,并且重新加载一切正常;如果我们不关闭受影响的标签,问题就会重复。
我不确定这是否是Visual Studio错误,或者我们正在做一些“错误”或意外的事情。有没有人对这种问题的看法或常见原因有任何想法?
(为了论证,该解决方案由MyLibrary和MyLibrary.Windows组成,它有一个前者的项目引用。一旦Visual Studio加载,两个项目都没有问题。如果它有任何区别,那么项目已经被从VS2003迁移,后者反过来没有出现这种崩溃)
修改
还尝试使用附加的调试器加载解决方案,并加载解决方案,并在不停止任何异常的情况下崩溃
答案 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)
您可以尝试:
修改强>
还尝试将引用的dll特定版本设置为false并重新加载解决方案。见http://channel9.msdn.com/forums/TechOff/261335-Dreadful-Visual-Studio-2008-crash-Solved/?CommentID=392089
答案 2 :(得分:0)
你有一个控制器对其父形式做出假设吗?当表单设计器加载表单时,它会创建控件的实例,但不会创建表单类的实例。
因此,如果您的某个控件仅依赖于您的表单类作为其父类进行实例化,则在加载到表单设计器时它可能会崩溃。