1

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

问题是如果我决定更改组件背景的默认颜色或更改文本的位置,这些更改不会反映在使用该组件的解决方案的所有其他项目中。我已经编译了组件的项目,所有其他项目都通过项目引用了该组件。

目前,我要做的就是将另一个项目中的组件一个接一个地取下来,然后将其添加回来,那么一切都很好。你有快速的方法吗?

更新 我在该组件中添加了一个 CheckBox ,似乎该复选框无处不在!美好的!但是,当一个属性有一些标签可以让组件更改时(例如背景颜色),它不会更改“默认”值,而是将旧值作为更改后的值放入属性中。所以,如果我没有在“属性”面板中手动添加更改颜色,我会看到旧值设置...

更新 2 替代文字 http://img517.imageshack.us/img517/9112/oldonenewoneei0.png

更新 3:

这个问题仍然存在。只是为了让人们知道我仍然很想找到一种方法。

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

  1. 如果我清理所有解决方案并仅构建具有自定义控件的项目,那么我将构建解决方案。没有任何变化(为了测试它,我将组件的颜色更改为黄色。没有任何变化:失败
  2. 如果我删除引用并将其添加回项目,然后重建解决方案。我可以看到设计师的旧颜色:失败

对于那些想要帮助我的人,我已经用更多信息和图片(上图)更新了这个问题。

如您所见,组件的旧“编译”显示黄色背景,但是当我插入一个新组件(从 Visual Studio 的左侧工具栏)时,我可以让新组件具有假定的白色背景......

4

5 回答 5

1

这很可能是由于引用

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

您可以通过让它们成为同一解决方案的一部分来解决这个问题。在这种情况下,您可以正确设置项目依赖项,它应该会自动为您处理事情。但是,将所有内容都放在同一个解决方案中并不总是正确的做法。

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

于 2008-09-17T18:01:38.290 回答
0

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

于 2008-09-17T18:00:00.837 回答
0

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

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

于 2008-09-17T18:00:32.693 回答
0

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

我不确定为什么会发生这种情况,但这就是我克服它的方法......

最近我已经切换到通过 Nant 构建所有东西,这完全解决了这个问题。

于 2008-09-17T18:02:33.437 回答
0

有时,可视化设计器会序列化代码隐藏中的所有属性,即使它们具有默认值。

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

于 2008-09-17T18:04:21.077 回答