2012-12-12 25 views
1

如何重建一個Windows應用程序我建立一個Windows應用程序,如POS系統,我想補充一點,讓用戶在Windows中添加新的按鈕的功能。因此,在用戶輸入信息(如項目名稱和價格)後,應用程序將生成代碼以創建一個新按鈕並將代碼添加到MainForm.cs和MainForm.Designer.cs中。當它運行

然而,直到我停止應用程序,然後重新運行編譯的exe在源代碼中的變化將不會生效。當它仍在運行時,可以使應用程序重建嗎? (即用戶可以看到新的按鈕顯示在窗口,他/她輸入以後的信息)

我一直在使用Application.Restart嘗試();和this.Refresh();,但它沒有工作。

+1

我認爲丹尼爾希爾加斯有正確的答案「你的方法是錯誤的」。通常當你發現事情並不明顯時,這意味着你正在做一些無意的事情。你當然不希望根據用戶的操作重新編譯代碼等等! – Belogix

回答

6

您在這裏沒有使用正確的方法。

您不應該修改基於用戶輸入您的應用程序的代碼。
而是保存用戶在數據庫或文件中輸入的數據,並使用此信息動態顯示按鈕。

+0

謝謝。我也擔心在不調試的情況下運行應用程序可能會導致嚴重的錯誤。這只是一種不連接數據庫的做法,我想我最好找到一種動態顯示按鈕的方法 – Verity

0

我認爲這是可能的...但也有侷限性。 你可以創建一個AppDomain並加載一個dll代碼(這個dll包含你的應用程序表單)。 然後,您卸載應用程序域,生成DLL並重新創建一個新的AppDomain。

當然,你必須關閉你在窗口,有一個DLL架構完全不同吳丹只是一個簡單的WinForms應用程序。

這是什麼樣的事情,我會建議自動更新例如

+0

這聽起來很複雜,但謝謝。 – Verity

0

一句話,沒有 - 因爲重建一個應用程序替換磁盤上的可執行映像文件,這通常是由正在運行的進程鎖定。

Visual Studio和其他IDE支持「編輯並繼續」,允許在程序在斷點處等待時在運行時替換代碼,但僅限於少數情況下(例如修改現有方法中的代碼)。它對於批發功能或GUI更改不夠靈活(如果您使用XAML資源,這是不可能的)。

如果您想要尋找那種靈活性,那麼您必須深入研究一個支持這些功能的舊式大型機類系統(例如IBM Z系列) 。

相關問題