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

标签 c# winforms visual-studio

我们有一个控件项目,其中包含在我们的应用程序中使用的许多控件。这些控件上有很多旧的和很多冗余的属性,而且几乎没有一个在它们上面指定了属性(特别是 DefaultValue())。

作为清理它们的工作的一部分,我们已将属性添加到属性中,并希望删除多余的属性。

作为其中的一部分,我们想要做的是清除 winforms 设计器生成的代码(xxxxxx.designer.csxxxxxx.designer.vb文件)。一些属性是直接删除的,为此我们能够使用 Grep 和 Sed 删除有问题的行,但我们正在寻找一种方法让 Visual Studio(或其他软件)重新生成文件。

由于我们有 100 多个表单,手动打开每个表单并对其进行修改是不可行的。

有谁知道这样做的方法吗?

编辑:

澄清一下,我的意思不是立即删除属性,而是将 DesignerSerializationVisibity() 属性应用于它们以告诉设计者不要编写它们。然后,一旦我们更新了所有设计器文件,我们就可以删除属性。

另请参阅:

Automatic regenerate designer files

最佳答案

不可能,当 InitializeComponent() 包含您已删除或重命名的属性的属性分配时,您无法让设计器解析它。它必须先解析它,然后才能重新生成代码。

唯一真正的方法是首先将 [DesignerSerializationVisibility] 属性应用于旧属性,这样它就不再写入属性赋值。然后加载每个表单并进行简单的编辑以使其重新生成 InitializeComponent(),现在没有属性分配。然后你可以删除它们。直接编辑方法可能会更快。

关于c# - 强制 WinForms 重新生成 .designer.cs 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7529352/

相关文章:

c# - 文件内容搜索 C#

c# - 有时上下键在 DataGridView 上不起作用

c# - 无法重命名 Visual Studio 2010 项目

c# - MVC 5 选择显示当前选择的列表项

c# - 在 LINQ to Entities 中使用 DateTime

c# - .NET 4.0 是否需要 DLR?

c# - 我如何告诉 `ConcurrentDictionary.GetOrAdd` 不添加值?

c# - 如何获取文本框,编辑它们并将它们保存回数据库?

c# - sgen.exe 在构建期间失败

javascript - 自动化地缩小大型 TypeScript 应用程序