詳解VB.NET動態編碼技巧
VB.NET有很多值得學習的地方,這里我們主要介紹VB.NET動態編碼技巧,包括介紹Parms.OutputAssembly屬性等方面。
VB.NET動態編碼技巧
首先創建了一個使用VBCodeProvider的編譯器Comp。.NET版本使用的是不同的方法但是這里所講的是微軟推薦的一個新方法。
為了使用編譯器,你必須創建能描述應用程序的參數。這些參數類似于VS中你創建的參數,只是現在你可以對它們進行定義。該代碼一開始就將GenerateExecutable設置為True,這意味著你需要的是一個EXE文件而不是DLL.
Parms.OutputAssembly屬性包含了輸出文件的名稱。你只需要在想創建文件時提供這一信息即可,而不需要生成可執行內存了。如果你ixiang生成可執行文件的內存版本,可以將Parm.GenerateInMemory屬性設置為True.
使用Parm.TreatWarningsAsErrors屬性來確定如何處理警告信息。默認的設置會使其為錯誤,這意味著你的應用程序可能無法對其進行編譯。大多數程序員使用默認設置,盡管他們開發了程序,但是在開發完成的程序中卻將其設置為False.
大多數應用程序需要外部DLL以正常運行。當然,你不能創建任意的沒有引用外部DLL的Windows表單程序。通常,你要使用Reference文件夾來完成這一任務。不過,當你動態創建代碼的時候可以依賴于Parms.ReferencedAssemblies屬性。如下所示,只需添加你要的DLL即可。
現在,你已經定義了項目,接下來需要為其創建源代碼。如前文所述,你可以依賴于一個外部文件或DOM模式。然后,該示例創建了代碼因此你可以看到整個過程。下面是代碼的原始形式:
- Imports System.Windows.Forms
- Module TestAssembly
- Sub Main()
- MessageBox.Show("Dynamically Created Code!")
- End Sub
- End Module
這個簡單的例子顯示了一個對話框。注意vbCrLf的使用。如果你不使用這一方法,那編譯器會發送給你一個錯誤信息。vbCrLf條目在該代碼中所起的作用與在程序代碼中的作用相同,只是添加的方式不一樣。
從這一點老說,你***會用Comp.CompileAsseblyFromSource()方法編譯代碼。當使用DOM模式和文件的時候可以使用這一方法。而在所有三種情況中,編譯器用參數和源代碼創建了你請求的輸出。該運算的輸出出現在Executable中,是CompilerResults類型。
編譯的失敗次數多于程序員的預計。無論你是在哪里使用VB.NET動態編碼技巧,你必須假設會出現失敗的情況以及處理失敗的方案。在本例中,代碼尋找的是錯誤并在編譯失敗時將其展示在了信息框中。否則,代碼會依賴于Process.Start()方法來啟用可執行文件。
VB.NET動態編碼技巧并不是***鑰匙。當你為開發問題找到了好的靜態解決方案時,當然也可以使用。但是在我們所列出的情況中沒有可行的靜態方案,因此要選擇VB.NET動態編碼技巧。大多數情況下,要用VB.NET動態編碼技巧解決以下問題:
◆用戶的環境會以不可預見的方式更改時;
◆無法控制用戶電腦的安裝;
◆用戶或應用程序都添加了你要用控件執行的數據要素;
◆應用程序必須執行很早以前的安裝任務,且這些任務與電腦,環境,網絡或其他不確定因素聯系緊密時;
◆應用程序要執行了處理級別的任務,且這些任務取決于機器連接或其他狀況。
顯然,還有其他一些情況能使用VB.NET動態編碼技巧。最重要的是記住但凡有不可預知的情況下要考慮使用VB.NET動態編碼技巧。通常在編碼環境中出現了靜態代碼無法處理的情況時,我們就可以使用VB.NET動態編碼技巧。
【編輯推薦】