3

快速了解相关项目的背景:它是 C# .Net 4、带有智能客户端工厂的 WinForms,不幸的是有很多视觉继承。

以下是我正在处理的团队遇到的问题的简要概述,这似乎是相当断断续续的:

有人会打开其中一个客户端模块项目以开始处理其中一个视图,双击该视图以打开设计器,Visual Studio 会给他们一个设计时错误,例如:

没有退路。如果您从这里重建而不做以下工作,那么错误仍然会持续存在。我们发现的唯一解决方法是清理客户端解决方案,关闭 Visual Studio(您必须这样做),重新打开 Visual Studio 并重建解决方案。下次您尝试打开视图时,它将起作用。但是错误会再次出现 - 它似乎是在X次重建之后(可能仅在您构建解决方案时在设计器中打开视图时?)

没有人花时间真正深入研究这个问题,目前没有人有时间!所以我想知道(有点长镜头)是否有人可能对可能发生的事情有所了解?或者,一旦我们有时间研究这个问题,也许就知道从哪里开始挖掘?

4

1 回答 1

0

如果你使用视觉继承,这些问题是生活中的一个事实,它们不可能永远消失。

我在当前项目中广泛使用了 UserControl 继承。我曾经经常遇到您描述的问题。随着时间的推移,我已经将设计细化到现在只是偶尔发生的地步,而且我很少需要再进行干净-重启-重建的舞蹈了。

您的里程可能会有所不同,但我认为我为减少此问题所做的主要工作是摆脱设计时程序集间数据绑定。

例如,当您将 Bi​​ndingSource 拖放到表单上并将其数据源设置为来自另一个程序集的类型时。

(嗯,它总是来自另一个程序集,因为我从未在与我的 UI 相同的程序集中定义类型。所以据我所知,程序集间的事情甚至可能不是一个因素。)

无论如何,我最终摆脱了大部分或所有这些设计时绑定,并在运行时设置了我所有的绑定。问题已经解决了 99%。它仍然偶尔发生,但我不费心尝试对其进行故障排除。

无论您做什么,都不要从通用基类继承表单/控件。这会在 100% 的时间里破坏它。如果您需要这样做,可以通过快速搜索找到一种解决方法。

微软几乎肯定永远不会解决这些问题,所以要习惯它们。

于 2011-10-28T23:16:35.317 回答