强制WinForms重新生成.designer.cs文件

6
我们有一个包含许多控件的控件项目,这些控件在我们的应用程序中被广泛使用。这些控件上有许多旧的和冗余的属性,几乎没有一个指定了属性(特别是DefaultValue())。
作为清理工作的一部分,我们已经向这些属性添加了属性,并正在寻找删除冗余属性的方法。
作为此过程的一部分,我们希望清除WinForms设计器生成的代码(xxxxxx.designer.csxxxxxx.designer.vb文件)。其中一些属性可以直接删除,我们可以使用Grep和Sed来删除有问题的行,但我们正在寻找一种方法让Visual Studio(或其他工具)重新生成这些文件。
由于我们有数百个表单,手动打开每个表单并修改它们是不可行的。
有人知道如何做到这一点吗?
编辑:
澄清一下,我的意思不是立即删除属性,而是对它们应用DesignerSerializationVisibity()属性,告诉设计器不要写入它们。然后,一旦我们更新了所有设计器文件,就可以删除这些属性。

参见:

自动重新生成设计文件

1个回答

4

不可能的,当InitializeComponent()中包含你已经删除或重命名的属性赋值时,你无法让设计师解析它。他必须在重新生成代码之前解析它。

唯一有效的方法是首先在旧属性上应用[DesignerSerializationVisibility]属性,使其不再写入属性赋值。然后加载每个窗体并进行微小的编辑,以便重新生成InitializeComponent(),现在不再包含该属性赋值。然后你就可以删除它们了。直接编辑该方法可能会更快。


我的意思不是要删除这些属性,而是将 Browsable(False) 属性应用于它们,告诉设计师不要编写它们。然后,一旦我们更新了所有的设计文件,就可以删除这些属性。 - Pondidum
不,[Browsable] 只影响在属性窗口中的可见性。你真正需要的是 [DesignerSerializationVisibility] 来避免编写。 - Hans Passant
属性构造函数不接受布尔值,不知道你在做什么。你的编辑只是重复了我发布的内容。祝你好运。 - Hans Passant

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接