自动重新生成设计器文件

时间:2011-05-31 14:04:40

标签: c# visual-studio user-interface windows-forms-designer automated-refactoring

最近我对我们使用的很多控件进行了一些改进,例如给出属性默认值并使按钮变为私有而不是受保护。 通过进行这种调整,您需要重新生成具有此控件的表单的设计器文件或从控件继承的控件。

过去这不是一个真正的问题因为我们只有20到30个表格。目前我们有超过300种形式,这意味着在VS2010中开设相同数量的设计师。

所以我的问题:您是否知道一种自动化此过程的方法,以便重新生成所有表单?

我一直在考虑寻找设计器文件并打开文件的宏(打开最多25-50个文件以确保VS不会崩溃),但我无法得到这个工作

我希望有人有个建议!

3 个答案:

答案 0 :(得分:6)

我发现做你想要的唯一方法是打开表单设计器,添加一个控件,然后保存。这将重新生成设计器代码。接下来删除新添加的控件,再次保存并关闭。

我通常通过双击工具箱中的按钮来添加按钮。这将按钮放在位置0,0。

几个月前我用一个包含大约100个表单和用户控件的项目做了这个。我记录了一个临时宏,然后为每个表单/用户控件运行宏,并检查结果,而不是在项目文件上递归的宏。

不要将重构与重新格式化混淆。我经常以大型形式优化和/或修改设计器代码。例如,我将更改添加到面板的订单控件,以及如何将面板添加到其他面板。 我不会盲目地重新设计设计师代码。

答案 1 :(得分:2)

我也遇到了这个问题(另请参阅:Force WinForms to regenerate .designer.cs files)。

最后,我删除的大多数属性都是唯一命名的,我能够编写一个shell脚本来删除包含属性名称的设计器文件中的行。

注意,这实际上会删除该行,而不仅仅是留空行 它需要从Bash Shell运行,如果你安装了msysgit,那shell就没问题了 在这一个中,TextForeColor是要删除的属性。

#!/bin/bash
files=$(find . -type f -name '*.Designer.cs' -print0 | xargs -0 grep -l 'TextForeColor')
for file in $files
do
    echo $file
    sed '/TextForeColor/ d' $file >$file.tmp
    mv $file.tmp $file
done

答案 2 :(得分:-3)

使用表单的继承,而不是维护300多个控件的更改。