2010-03-24 50 views
1

我們認爲大部分來源已通過.NET Reflector恢復。將dll導出爲C#源的實用程序。從dll恢復WinForms

唯一缺少的部分是WinForms,它不包括.NET反射器導出dll源代碼。

有沒有什麼辦法讓WinForms從DLL中恢復?

謝謝。

+0

häh?什麼「WinForms」?反射器確實導出所有的類。你錯過了什麼? – TomTom 2010-03-24 12:39:21

+0

是的,它會導出所有的類。但是當我們在設計視圖中打開窗體時,會顯示一些錯誤消息「爲了防止在加載設計器之前可能會丟失數據,必須解決以下錯誤:」 – 2010-03-24 13:02:39

回答

1

如果它不是在DLL中,你不能把它弄出來:-)

但可能一些類文件是你要搜索的形式。也許你必須將一個對System.Windows.Forms.dll的引用添加到你的項目中。

+0

任何其他可以執行此操作的實用程序? – 2010-03-24 13:03:18

+0

你會建議我們接下來應該做什麼? – 2010-03-24 13:03:36

+0

首先,您必須驗證Windows窗體是否實際位於dll中。如果它不在dll文件中,則無法恢復它們,因爲沒有任何可恢復的東西。你確定這些表單在dll中嗎? 一個WinForm只不過是一個部分類的集合;設計者和代碼。因此,在導出整個程序集時,添加對System.Windows.Forms.dll的引用並嘗試找出哪些類最可能是表單。 – Rhapsody 2010-03-24 13:34:37

0

從Visual Studio 2005開始,Windows窗體類是部分類拆分爲Designer生成部分(MyForm.designer.cs)和您的實際實現(MyForm.cs)。當您從頭開始創建新表單時,您可以在資源管理器中看到。

爲了解決您的問題,您將不得不像Visual Studio那樣將反射器導出的類拆分:將InitializeComponent()方法和所有控件聲明放入MyForm.designer.cs文件中,並將其餘代碼放入MyForm.cs文件。

+0

@divo謝謝我喜歡這個主意:)我會嘗試一下 – 2010-03-24 14:01:03