该项目背景的快速背景:它是C#.Net 4,带有智能客户端工厂的WinForms,不幸的是有很多视觉继承。
以下是我正在研究的团队遇到的问题的简要概述,这似乎是间歇性的:
有人会打开其中一个客户端模块项目,开始在其中一个视图上工作,双击视图打开设计器,Visual Studio会给他们一个设计时错误,如:
http://www.freeimagehosting.net/newuploads/f0be0.jpg
没有办法退缩;如果你从这里重建而没有做下面的工作,那么错误仍将存在。我们发现的唯一工作是清理客户端解决方案,关闭Visual Studio( 做到这一点),重新打开Visual Studio并重建解决方案。下次尝试打开视图时,它将起作用。但错误将再次出现 - 它似乎是在 X 重建量之后(可能只有当你在构建解决方案时在设计器中打开视图时?)
没有人抽出时间真正深入研究这个问题,目前没有人有时间!所以,如果有人可能对可能发生的事情有所了解,我想知道(有点远射)?或者也许是一旦我们花点时间研究一下这里就开始挖掘了什么?
答案 0 :(得分:0)
如果你使用视觉继承,这些问题是生活中的事实,它们不可能永远消失。
我在当前项目中广泛使用UserControl继承。我曾经经常遇到你所描述的问题。随着时间的推移,我已经将设计细化到现在偶尔发生的程度,我很少再进行干净 - 重启 - 重建舞蹈了。
你的里程可能会有所不同,但我认为我为减少这个问题所做的主要工作是摆脱设计时的组装间数据绑定。
这方面的一个示例是当您在表单上删除BindingSource并将其数据源设置为另一个程序集中的类型时。
(好吧,它总是来自另一个程序集,因为我从来没有在我的UI中定义同一个程序集中的类型。所以我知道,组装之间的事情可能甚至不是一个因素。)
无论如何,我最终摆脱了大部分或全部这些设计时绑定,并在运行时设置了所有绑定。问题已经消失了99%。它偶尔会发生,但我不打算尝试对其进行故障排除。
无论你做什么,都不要从泛型基类继承表单/控件。这100%的时间打破了它。如果您需要这样做,可以通过快速搜索找到解决方法。
微软几乎肯定不会解决这些问题,所以要习惯它们。