C#動態(tài)加載組件后在開發(fā)環(huán)境中調試示例

小編給大家分享一下C#動態(tài)加載組件后在開發(fā)環(huán)境中調試示例,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

10年積累的網站設計制作、網站設計經驗,可以快速應對客戶對網站的新想法和需求。提供各種問題對應的解決方案。讓選擇我們的客戶得到更好、更有力的網絡服務。我雖然不認識你,你也不認識我。但先網站制作后付款的網站建設流程,更有蓮湖免費網站建設讓你可以放心的選擇與我們合作。

動態(tài)加載組件

那就是簡單的Assembly.Load動態(tài)加載dll而以。這網上資料也有不少。基本的思路基本上就是在本地上一個指定目錄如【plugs】存在著一堆dll文件。主程序在初始運行時一般會把指定目錄下的dll一次性用Assembly.Load加載進來。只要把指定目錄變成從網絡加載,或者加載指定目錄前先檢查網絡上的是否有新版本。這就簡單做成個最簡單版本的熱更新。

多數網上的資料就是然后就沒有然后了。很多人就發(fā)現產品是通過動態(tài)加載組件了。但開發(fā)人員根本無法調試啊。不能調試就意味著開發(fā)難度大啊。出了Bug我都不知道怎么查錯。難度開發(fā)就要像在正式環(huán)境那樣子不停的寫log文件。如果這樣子的動態(tài)加載真的得不嘗失。只是簡單的動態(tài)加載對產品做出的優(yōu)化可能只是5%,但對于開發(fā)效率來講這可不止減少5%的問題。當有也有不少人為了能讓組件項目能調試都會新建一個項目直接引用組件項目。通過這種曲線救國的方式來解決問題的。

開發(fā)環(huán)境中怎么調試

用VS IDE開發(fā)時為什么能夠調試。VS IDE在的操作原理還是通過Ms-build來生成程序集的。只有dll存在了才能進行調試斷點的。這我為動態(tài)加載也是加載了dll文件了那怎么斷點沒有效果呢。那細心的人也知道在生成程序集的時,同時還生成了一個同名稱的pdb文件。有興趣的朋友可以在百科上找到相關資料。說白了有了這個pdb文件才能用VS IDE進行調試斷點的。

用VS建立方案

C#動態(tài)加載組件后在開發(fā)環(huán)境中調試示例

MyPlatform為主項目,主要用于動態(tài)加載組件。

MyPlatform.Standard為定義標準的接口項目。所有的基礎接口,抽像類都應該出自這個項目。

MyPlatform.ModuleHelloWord為第一個組件模組。寫代碼的人第一個功能都是HelloWord。

定義組件規(guī)則

IPlugModule,IPlugItem為每個組件模組定義好要顯示的名稱,和調用指定組件時入口方法。先定義了最基本功能以后再加另的功能。

C#動態(tài)加載組件后在開發(fā)環(huán)境中調試示例

實現第一個組件模組

HelloWordModule,HelloWordPlug做為第一個組件模組,實現的功能當然也是最簡單的。

C#動態(tài)加載組件后在開發(fā)環(huán)境中調試示例

C#動態(tài)加載組件后在開發(fā)環(huán)境中調試示例

實現動態(tài)加載

想動態(tài)加載組件。前兩步定義好規(guī)則和第一個組件模組也出來了?,F在到主項目平臺來了。要動態(tài)加載還是要一個組件管理功能來管理加載對應的組件模組項目。組件管理只應該有從那里加載模組特定。按這分析。組件管理類

C#動態(tài)加載組件后在開發(fā)環(huán)境中調試示例

按照這定義好完善功能。

C#動態(tài)加載組件后在開發(fā)環(huán)境中調試示例

IDE項目設置

為了方便開發(fā)調試。對項目使用設置。

MyPlatform項目-》屬性-》生成-》輸出

C#動態(tài)加載組件后在開發(fā)環(huán)境中調試示例

MyPlatform.ModuleHelloWord輸出為位置為組件模組加載目錄

C#動態(tài)加載組件后在開發(fā)環(huán)境中調試示例

對解決方案進行設置。右鍵屬性-》項目依賴。把組件也選上。這所講的依賴并不是主項目引用了組件項目,而是在生成主項目前先把選中的項目生成成功再生成編譯主項目。

C#動態(tài)加載組件后在開發(fā)環(huán)境中調試示例

輸出效果

C#動態(tài)加載組件后在開發(fā)環(huán)境中調試示例

從項目上來看,怎么什么輸出信息都沒有呢。打開組件目錄發(fā)現什么都沒有。原來都沒有生成組件到這個目錄。那你可能就是忘記上面提交到第三步設置。請回去看一次。

C#動態(tài)加載組件后在開發(fā)環(huán)境中調試示例

這就簡單的能動態(tài)加載了。這的思路和網上的基本上都一樣的。但發(fā)現就是不能斷點調試。不能調試這就是在耍流氓嘛。

修改代碼支持斷調試

查看Assembly.Load的方法發(fā)現有意思的重載。除了加載一個流文件的方法??梢园l(fā)現還有三個方法是加載兩流文件的。一個帶有安全參數的方法。不過由于第一個已經過時棄用,建議使用第三個方法。那其實就只有兩個方法可用。那就是說在加載時能同時把pdb程序調試數據庫也能加載了。這就能很好解決VS IDE能調用的問題了。

C#動態(tài)加載組件后在開發(fā)環(huán)境中調試示例

改動代碼。加載dll文件時判斷pdb文件是否存在,存在則一并加載。這方法也使用在debug模式下。那正式環(huán)境一般不會把pdb文件也發(fā)布出去。所以就走了分支。

C#動態(tài)加載組件后在開發(fā)環(huán)境中調試示例

能調試的輸出效果

C#動態(tài)加載組件后在開發(fā)環(huán)境中調試示例

以上是“C#動態(tài)加載組件后在開發(fā)環(huán)境中調試示例”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注創(chuàng)新互聯行業(yè)資訊頻道!

新聞名稱:C#動態(tài)加載組件后在開發(fā)環(huán)境中調試示例
分享鏈接:http://muchs.cn/article16/jojsgg.html

成都網站建設公司_創(chuàng)新互聯,為您提供品牌網站設計、網頁設計公司手機網站建設、軟件開發(fā)移動網站建設、網站設計

廣告

聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯

成都seo排名網站優(yōu)化