2011-04-11 247 views
2

我有以下問題,稍後會盡量描述一下。visual studio 2010 c#winform運行時編譯

在我的程序中,可以通過點擊一個按鈕來編譯winform到.exe。

現在我試着用CodeDom中做到這一點,所以在我的節目,我有以下行:

CompilerResults results = codeProvider.CompileAssemblyFromSource(parameters, text); 

其中codeProvider是CodeDomProvider和文本是從哪兒來編譯源。

問題是我需要保存的winform,因爲.exe有一個使用其他類和表單的類,因爲參數'text'是一個字符串參數,它必須包含所有這些類,結果大量的代碼,更不用說大量的錯誤。 Here就是我的意思。

必須有其他方式,問題是,它們是什麼?提前致謝!

+2

您試圖解決什麼問題? – jfs 2011-04-11 06:41:32

+0

如果您告訴我們業務需求是什麼,我相信我們可以找到更好的解決方案來解決您的問題。 – 2011-04-11 06:45:28

回答

1

如果您總是使用相同的一組類,那麼將這些常見的類放入類庫中並引用來自動態編譯的代碼將是值得的。

如果他們是而不是在每種情況下都是一樣的,很難看到你期望的改進 - 如果需要編譯多少代碼,它必須被編譯,並且有很多代碼可能會出錯它。

+0

這套課程是一樣的,我會盡量遵循你的建議,謝謝! – 2011-04-11 07:33:36

+0

@Jon Skeet很抱歉回到問題,但我再次被卡住了。我創建了一個類庫,當我從我的主項目中調用它時,創建一個對象,一切都很好。但是,如何使用CodeDom將它傳遞給動態編譯的代碼?我如何將它添加爲從何處編譯的源代碼?請記住構造函數應該帶一個參數,所以它看起來像這樣:'CodeToCompile.TForm test = new CodeToCompile.TForm(TestElement.PanelsWithTestElements);' 非常感謝! – 2011-04-14 17:58:36

+0

@ tube-builder:在傳遞給CompileAssemblyFromSource的CompilerParameters中添加一個引用。我不知道構造函數在什麼地方進入你的問題...... – 2011-04-14 18:00:48

相關問題