更新源代码时,C#组件不会刷新

时间:2008-09-17 17:56:15

标签: c# .net custom-component

我有很多项目的解决方案。一个项目包含很少的自定义组件其中一个组件用于在图像上显示标题。我们可以改变背景的颜色和许多其他东西。

问题是如果我决定更改组件背景的默认颜色或更改文本的位置,那么更改将不会反映在使用该组件的解决方案的所有其他项目中。我已经完成了组件项目和所有其他项目的安静。通过项目引用组件。

目前,我要做的是逐个从其他项目中取出组件并将其添加回去,然后一切都很好。你有快速的方法吗?

更新 我在该组件中添加了一个CheckBox,似乎复选框无处不在!精细!但是当属性具有允许组件更改的某个标记时(例如背景颜色),它不会更改“默认”值,而是将旧值作为属性中的更改值。所以,我看到设置的旧值,就像我手动更改了属性面板中的颜色,当我没有...

更新2 alt text http://img517.imageshack.us/img517/9112/oldonenewoneei0.png

更新3:

此问题仍然存在。只是为了让人们知道我仍然很想找到一条路。

我已经尝试了一些你的建议。

  1. 如果我清理所有解决方案并仅构建具有Custom控件的项目,那么我构建解决方案。没有任何变化(为了测试它,我已将组件的颜色更改为黄色。没有任何变化:失败
  2. 如果我删除引用并将其添加回项目,然后重新构建解决方案。我可以在设计师看到旧颜色:失败
  3. 我已经为那些想要帮助我的人提供了更多信息和图片(上图)更新了问题。

    正如您所看到的,组件的旧“编译”显示黄色背景,但是当我插入一个新组件时(从Visual Studio中的左侧工具栏),我可以使用假定的WHITE背景的新组件。

5 个答案:

答案 0 :(得分:1)

这很可能是由于 references

您的其他项目可能 copy in a reference 到您的组件项目。您必须重建这些其他项目,以便它们在引用的组件项目中重新复制(如果已更改)。它仅在构建时更新。

你可以通过让它们成为同一解决方案的一部分来解决这个问题。在这种情况下,您可以正确设置 project dependencies ,它应该主要为您自动处理。但是让所有东西都在同一个解决方案中并不总是正确的。

如果您已将它们作为相同解决方案的一部分,或者它不是引用问题,则可能是由于 component serialization 。在进行自定义控件开发时,我们经常遇到这个怪癖。

答案 1 :(得分:0)

我的猜测是设计师很聪明,并且会在设计器中记住组件的设置,因此将其视为默认设置。

答案 2 :(得分:0)

这听起来并不常见。右键单击解决方案并点击“清理解决方案”可能有所帮助(它将删除每个项目的bin目录中的所有dll和可执行文件,这会强制进行新的构建)

您可能还想检查构建顺序。

答案 3 :(得分:0)

我在一个有类似问题的项目上工作,我发现如果你触摸.NET配置文件或程序集信息文件(取决于你的项目类型)。其他项目将反映组件变化......

我不确定为什么会这样,但这就是我克服它的方法......

最近我已经转而通过Nant构建一切,并完全解决了这个问题。

答案 4 :(得分:0)

有时,Visual Designer会序列化代码隐藏中的所有属性,即使它们具有默认值。

如果您的组件的默认背景颜色为红色,并且您将默认背景颜色更改为蓝色,则使用您的组件的组件会将其更改回红色。