欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C#動態(tài)加載組件后如何在開發(fā)環(huán)境中調(diào)試詳解

 更新時間:2019年03月12日 09:43:25   作者:旦旦  
這篇文章主要給大家介紹了關(guān)于C#動態(tài)加載組件后如何在開發(fā)環(huán)境中調(diào)試的相關(guān)資料,文中通過圖文介紹的非常詳細(xì),對大家的學(xué)習(xí)或者使用C#具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧

動態(tài)加載組件

那就是簡單的Assembly.Load動態(tài)加載dll而以。這網(wǎng)上資料也有不少?;镜乃悸坊旧暇褪窃诒镜厣弦粋€指定目錄如【plugs】存在著一堆dll文件。主程序在初始運(yùn)行時一般會把指定目錄下的dll一次性用Assembly.Load加載進(jìn)來。只要把指定目錄變成從網(wǎng)絡(luò)加載,或者加載指定目錄前先檢查網(wǎng)絡(luò)上的是否有新版本。這就簡單做成個最簡單版本的熱更新。

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

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

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

用VS建立方案

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

MyPlatform.Standard為定義標(biāo)準(zhǔn)的接口項目。所有的基礎(chǔ)接口,抽像類都應(yīng)該出自這個項目。

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

定義組件規(guī)則

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

實現(xiàn)第一個組件模組

HelloWordModule,HelloWordPlug做為第一個組件模組,實現(xiàn)的功能當(dāng)然也是最簡單的。

實現(xiàn)動態(tài)加載

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

按照這定義好完善功能。

IDE項目設(shè)置

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

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

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

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

輸出效果

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

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

修改代碼支持?jǐn)嗾{(diào)試

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

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

能調(diào)試的輸出效果

附上源代碼:點(diǎn)擊下載

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,謝謝大家對腳本之家的支持。

相關(guān)文章

  • c# Base64編碼和圖片的互相轉(zhuǎn)換代碼

    c# Base64編碼和圖片的互相轉(zhuǎn)換代碼

    Base64編碼在Web方面有很多應(yīng)用,譬如在URL、電子郵件方面。網(wǎng)上有很多相關(guān)的資源用于提供Base64編碼和其他編碼的轉(zhuǎn)換,.Net Framework也提供了現(xiàn)成的功能類(System.Convert)用于將二進(jìn)制數(shù)據(jù)轉(zhuǎn)換為Base64字符串
    2014-08-08
  • C#日期轉(zhuǎn)換函數(shù)分享

    C#日期轉(zhuǎn)換函數(shù)分享

    這篇文章介紹了C#日期轉(zhuǎn)換函數(shù),有需要的朋友可以參考一下
    2013-10-10
  • C#中Convert.ToString和ToString的區(qū)別分析

    C#中Convert.ToString和ToString的區(qū)別分析

    這篇文章主要介紹了C#中Convert.ToString和ToString的區(qū)別,是C#初學(xué)者需要牢固掌握的技巧,需要的朋友可以參考下
    2014-08-08
  • C# 解析XML和反序列化的示例

    C# 解析XML和反序列化的示例

    這篇文章主要介紹了C# 解析XML和反序列化的示例,幫助大家更好的理解和學(xué)習(xí)使用c#,感興趣的朋友可以了解下
    2021-04-04
  • C#上位機(jī)與三菱PLC通訊的實現(xiàn)步驟(圖文)

    C#上位機(jī)與三菱PLC通訊的實現(xiàn)步驟(圖文)

    這篇文章主要介紹了C#上位機(jī)與三菱PLC通訊的實現(xiàn)步驟(圖文),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-02-02
  • c#獲取客戶端IP地址(考慮代理)

    c#獲取客戶端IP地址(考慮代理)

    這篇文章主要介紹了c#獲取客戶端IP地址(考慮代理),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-01-01
  • C#中的靜態(tài)字段double.Epsilon實例詳解

    C#中的靜態(tài)字段double.Epsilon實例詳解

    double.Epsilon 是C#中的一個靜態(tài)字段,表示 double 數(shù)據(jù)類型的最小可表示的正數(shù)值,這篇文章主要介紹了C#中的靜態(tài)字段double.Epsilon的相關(guān)知識,需要的朋友可以參考下
    2024-01-01
  • c# rsa注冊實現(xiàn)加密文字

    c# rsa注冊實現(xiàn)加密文字

    這篇文章主要介紹了c# rsa注冊實現(xiàn)加密文字,需要的朋友可以參考下
    2014-04-04
  • c#實現(xiàn)一元二次方程求解器示例分享

    c#實現(xiàn)一元二次方程求解器示例分享

    這篇文章主要介紹了c#實現(xiàn)一元二次方程求解器示例,需要的朋友可以參考下
    2014-03-03
  • c#實現(xiàn)將pdf轉(zhuǎn)文本的示例分享

    c#實現(xiàn)將pdf轉(zhuǎn)文本的示例分享

    這篇文章主要介紹了c#實現(xiàn)將pdf轉(zhuǎn)文本的示例,需要的朋友可以參考下
    2014-03-03

最新評論