更新源代码时C#组件不刷新
我有许多项目的解决方案。一个项目包含很少的自定义组件。这些组件之一用于在图像上显示标题。我们可以更改背景的颜色以及其他许多东西。
问题是,如果我决定更改组件背景的默认颜色或者更改文本的位置,则这些更改不会反映在使用该组件的解决方案的所有其他项目中。我已经编译了该组件的项目,并且所有其他项目都通过该Project引用了该组件。
目前,我要做的是一个接一个地从另一个项目中删除该组件并将其添加回去,然后一切都很好。我们有快速的方法吗?
更新
我在该组件内添加了一个CheckBox,看来该复选框无处不在!美好的!但是,当属性具有允许组件更改的某些标记(例如背景色)时,它不会更改"默认"值,而是将旧值作为更改后的值放在属性中。因此,我看到了设置的旧值,就像我在未设置时在"属性"面板中手动更改颜色时一样...
更新2
替代文字http://img517.imageshack.us/img517/9112/oldonenewoneei0.png
更新3:
这个问题仍然存在。只是让人们知道我仍然想找到一种方法。
我尝试了一些建议。
- 如果我清理所有解决方案并仅构建具有"自定义"控件的项目,那么我将构建解决方案。没什么变化(要测试,我将组件的颜色更改为黄色。没什么变化:失败。
- 如果删除引用并将其添加回项目中,然后重新生成解决方案。我可以在设计器中看到旧颜色:失败。
对于那些想尝试帮助我的人,我已经用更多信息和图片(上)更新了该问题。
如我们所见,该组件的旧"编译"显示黄色背景,但是当我插入一个新组件(从Visual Studio的"左工具"栏中)时,我可以拥有一个带有白色背景的新组件...
解决方案
回答
我的猜测是设计者很聪明,可以像在设计器中一样记住组件的设置,因此将其视为默认设置。
回答
这听起来不常见。右键单击解决方案,然后单击"清理解决方案"可能会有所帮助(它将从每个项目的bin目录中删除所有dll和可执行文件,这将强制进行新的构建)
我们可能还需要检查构建顺序。
回答
这很可能是由于引用。
其他项目可能复制了对组件项目的引用。如果它们已更改,则必须重新构建这些其他项目,才能将它们重新复制到引用的组件项目中。它仅在构建时更新。
通过使它们成为同一解决方案的一部分,我们可以在某种程度上解决此问题。在这种情况下,我们可以正确设置项目依赖关系,并且它应该会自动为我们处理事务。但是,将所有内容都放在同一个解决方案中并非总是正确的选择。
如果我们已经将它们作为同一解决方案的一部分,或者这不是引用问题,则可能是由于组件序列化。在进行自定义控件开发时,我们经常遇到这个问题。
回答
我在一个有类似问题的项目上工作,我发现如果我们触摸.NET配置文件或者程序集信息文件(取决于项目类型)。然后其他项目将反映组件更改...
我不确定为什么会发生这种情况,但这就是我克服它的方法...
最近,我转而通过Nant来构建一切,这完全解决了这个问题。
回答
有时,即使没有默认值,Visual Designer也会在代码背后序列化所有属性。
如果组件的默认背景色为红色,并且我们将默认背景色更改为蓝色,则使用组件的组件会将其更改为红色。