2011-09-23 144 views
5

我們有一個控件項目,其中包含我們的應用程序中使用的許多控件。這些控件有許多舊的和許多冗餘屬性,並且幾乎沒有任何屬性在其上指定屬性(例如特別是DefaultValue())。強制WinForms重新生成.designer.cs文件

作爲清理工作的一部分,我們爲屬性添加了屬性,並且正在尋找刪除多餘的屬性。

我們想要做的一部分是從Winforms設計器(xxxxxx.designer.csxxxxxx.designer.vb文件)中清除生成的代碼。有些屬性是直接刪除,爲此我們可以使用Grep和Sed刪除違規行,但我們正在尋找一種方法使Visual Studio(或其他)重新生成文件。

由於我們有100個表單,因此手動打開每個表單並修改它們以執行此操作是不可行的。

有誰知道一種方法來做到這一點?

編輯:

爲了澄清,我的意思是不是要刪除的屬性直線距離,但是到了DesignerSerializationVisibity()屬性應用到他們告訴設計師不寫他們。然後,一旦我們更新了所有設計器文件,我們可以刪除這些屬性。

另請參見:

Automatic regenerate designer files

回答

4

不可能的,你不能讓設計師解析的InitializeComponent()時,它包含屬性賦值爲您刪除或重命名的屬性。它必須先解析它才能重新生成代碼。

唯一真正的方法是首先將[DesignerSerializationVisibility]屬性應用於舊屬性,使其不再寫屬性分配。然後加載每個表單並做一個簡單的編輯,以使其重新生成InitializeComponent(),現在不需要屬性分配。然後你可以刪除它們。直接編輯該方法可能會更快。

+0

我的意思是不去除屬性,而是將Browsable(False)屬性應用於它們,以告訴設計者不寫它們。然後,一旦我們更新了所有設計器文件,我們可以刪除這些屬性。 – Pondidum

+0

不,[可瀏覽]僅影響「屬性」窗口中的可見性。你確實希望[DesignerSerializationVisibity]避免寫入。 –

+0

謝謝,更新的問題反映了這一點。 – Pondidum

相關問題