<nobr id="zkazv"></nobr>

      午夜精品一区二区三区成人,中文字幕av一区二区,亚洲AVAV天堂AV在线网阿V,肥臀浪妇太爽了快点再快点,国产网友愉拍精品视频手机,国产精品无码a∨麻豆,久久中文字幕一区二区,a级国产乱理伦片在线观看al
      首頁 新聞 工控搜 論壇 廠商論壇 產品 方案 廠商 人才 文摘 下載 展覽
       首頁 | 公司簡介 | 聯系方式 | 公司動態 | 產品 | 供應 | 應用實例 | 下載 | 文摘 | 誠聘 | 論壇
      .net程序資源組件淺析

      北京世紀長秋科技有限公司
      收藏本文     查看收藏

      .net程序的不同
        .net程序和以往的Windows應用程序有一個顯著不同的地方:它的可執行文件的組織方式,不像以往的應用程序。.net程序是由MSIL語言進行組織,運行時需要調用即時編譯器(JIT)編譯成本地匯編指令再來執行,好比以前的VB程序一樣,是一個解釋執行的過程。
        與指令相對應的是數據,一部分靜態數據或者說是資源,對它們來說.net程序和傳統程序也大大不同。本文主要對.net應用程序資源的組成以及對它的操作進行簡單分析。

      托管資源說明
        應用程序資源主要包括字符串、圖像、聲音、視頻等,目前最常用的是前面兩種,本文主要是以在應用bmp文件過程中的經驗做一下簡單說明。在過去,對應于MFC,資源以.rc文件方式組織,程序在使用資源時使用它的資源ID號做為索引,用起來很不方便,而且如果想把資源從應用程序做成一個單獨的資源dll文件,無論是制作還是使用,都是一件非常麻煩的事。
        .net程序在這些方面進行了改進,首先在設計階段,它把各種資源統一保存在資源文件里,稱作托管資源。這里的資源文件包括兩種,一種是XML文件,一種是.resources文件。我們使用.net編程序,尤其是用VC.net編程,首要建立一個form窗體,在上面加一些菜單和按鈕,然后在上面添加一些圖標,這時對應窗體名還另外生成了一個.resx文件,這就是XML型資源文件。
        XML資源文件是由XML標簽文本組成,用托管資源編輯器把這個窗體打開,就可以看到我們添加的圖標和文本。另一種資源文件.resources是以二進制方式存儲資源,它的體積要比XML資源文件小得多,這個文件在設計階段并不存在,只有VS在編譯.net程序時,才會把XML資源文件轉化為.resources文件,同時VS還會把XML資源文件里的資源打包進應用程序和dll文件中。
        MS為什么要這么做,是否有必要做成兩種資源文件形式,還有MS為實現資源打包,還在VS中添加了像托管資源編譯器之類的小工具,這么不怕麻煩又是為什么?這所有的問題都指向一個最有深度的解釋:服從.net戰略需要。

      托管資源的使用
        為方便使用這些資源,需要使用VS中包含的System::Resources程序集,其中操作.resx資源文件的類有ResXResourceSet()、ResXResourceReader()、ResXResourceWriter()。操作.resources文件的類有ResourceSet()、ResourceReader()、ResourceWriter()。這些類大體作用是為前兩個讀資源所用,后一個為寫資源用。
        這是直接操作資源文件,當資源被打包進exe或dll(在.net術語中稱為程序集)中之后,我們用ResourceManager類,這個類只能讀資源。這里要說明一下如何引用這些資源,用最簡單直接的方式是用名稱引用。舉個例子,如果有一個程序集a.dll,里面打包一個r.resx文件,r.resx里有一個  img.bmp文件,使用這個程序集里的img.bmp怎么辦?用幾句話便可以輕松解決:
        System::Resources::ResourceManager ^res = nullptr;
        Assembly ^Asm1 = Assembly::LoadFile("X:\\a.dll");
        res = gcnew System::Resources::ResourceManager("a.r",Asm1);
        Image ^m=dynamic_cast<System::Drawing::Image^>(res->GetObject("img"));

      另類使用方法
        除了一些具體的細節可以查看msdn之外,再補充一些非常規的用法。
        把所有的資源都放進.resx文件再打包進程序集固然是比較合乎邏輯的做法,如果要直接把資源(這里特別指的是bmp文件)放進程序集,而不經過打包這一步,是否可行?答案是沒有問題。事實上MS就做了這樣的事,在控件開發過程中,如果要給控件弄一個圖標,可以讓這個圖標顯示在VS的工具箱中,那就必須要給這個圖標(比如一個bmp文件)起一個和控件一樣的名字:(程序集名).(控件名).bmp,然后把這個圖標設置為鏈接器的嵌入托管資源文件。具體設置的方法是,在解決方案資源管理器中,在項目名稱上點右鍵->屬性,在彈出的對話框左面一欄選擇鏈接器->輸入,然后在嵌入托管資源文件一欄中填寫要嵌入的資源,如果有多個資源要嵌入,中間用逗號分隔開。設置好之后,編譯,然后剩下的問題就是引用。這里,引用也不是用常規的方法,而是使用System::IO程序集中的Stream類,以及Assembly類的GetManifestResourceStream方法。具體的引用方法如下:
        Assembly ^assembly = Assembly::GetExecutingAssembly();
        System::IO::Stream ^strm =assembly->GetManifestResourceStream("img.bmp");
        Image ^m=System::Drawing::Image::FromStream(strm);
        這里僅僅是對bmp文件的直接嵌入做了說明,如果讀者感興趣的話,也可以試試別的資源。
        可以看出,這樣的方法更直接,但并沒有數據可以證明這種方法的速度和常規方法相比有多大差距,單從開發的角度來看,無論是嵌入還是引用,這種方法都是比較簡潔。當然從管理的角度上這種做法不可取,效率和規范化經常是一對不可調和的矛盾。

      后記:開發工具的選擇
        下面介紹一下在開發.net程序過程中經常使用到的兩個工具,以及如何使用它們:
        第一個工具是VS自帶的MSIL反匯編工具,可以將程序集以樹形列表的方式顯示出來,也可以將程序集反匯編成IL指令文件。本文主要是用它查看托管資源的名稱,以便在其它地方引用。從文件->打開開始,選擇一個帶的托管資源的dll文件,點打開后,雙擊manifest節點,彈出一個新窗口,上面就是關于各個引用程序集的說明,在其中查找.mresource,就可以找到托管資源文件名。
        第二個工具是大名鼎鼎的reflector,由一名MS的員工編寫,是反編譯和破解.net程序必不可少的工具,在本文中主要是用它看看是否已正確地把資源文件直接嵌入到程序集中。這個工具的使用更簡單,打開程序集文件后,直接點里面的Resources節點即可,如果已經嵌入資源了的話,這個目錄下面直接就有這個資源。


       

      狀 態: 離線

      公司簡介
      產品目錄

      公司名稱: 北京世紀長秋科技有限公司
      聯 系 人: 徐向農
      電  話: 010-84645656
      傳  真: 010-84646515
      地  址: 北京市朝陽區惠新東街8號設計大廈14層
      郵  編: 100029
      主  頁:
       
      北京世紀長秋相關文摘:
      世紀星油庫進出油量監測方案
      《世紀星組態軟件》的獨特功能
      世紀星:罐區安全 全面監控
      世紀星實現彈簧按鈕功能升級
      世紀星控件DBComm:小塊兒有大“智慧”——DBComm.OCX控件 實現PID控制
      世紀星組態軟件完美的時間轉換函數:DateTimeConvert
      世紀星組態軟件強大的數據庫查詢函數
      建立完美通信:世紀星與西門子S7-200以太網
      怎樣通過OPC Client與世紀星交互
      世紀星與硬件設備的連接秘笈
      世紀星組態軟件新技術:短息報警功能
      世紀星組態軟件的數據存儲策略
      更多北京世紀長秋文摘...
      通過中華工控網在線留言北京世紀長秋科技有限公司:
      用戶名: 密碼: 免費注冊為中華工控網會員
      請留下您的有效聯系方式,以方便我們及時與您聯絡
       
      中華工控網 GKong.com制作發布 廣告聯系
      主站蜘蛛池模板: 男女xx00上下抽搐动态图| 肥臀浪妇太爽了快点再快点| 中文无码高潮到痉挛在线视频| 欧美丰满熟妇性xxxx| 国产熟女真实乱精品51| 国内少妇偷人精品免费| 欧美亚洲一区二区三区在线| 亚洲综合不卡一区二区三区| 国产男女猛烈无遮挡免费视频| 2019香蕉在线观看直播视频| 午夜福利看片在线观看| 国产精品亚洲一区二区三区喷水 | 久久亚洲精品天天综合网| 国产福利永久在线视频无毒不卡| 人人爽人人爽人人片av东京热| 精品中文人妻在线不卡| 白色丝袜国产在线视频| 正在播放的国产A一片| 精品视频在线观看免费观看| 麻豆国产va免费精品高清在线| 在线播放深夜精品三级| 最新国产精品中文字幕| 日本不卡的一区二区三区| 久久精品国产一区二区三| 99国产精品一区二区蜜臀| 国产乱码精品一区二区麻豆| 一级女性全黄久久生活片| 日韩一区二区三区东京热| 黄男女激情一区二区三区| 精品人妻一区二区| 最新中文字幕av无码专区不| 漂亮人妻被强中文字幕久久| 口爆少妇在线视频免费观看| 亚洲第一无码AV无码专区| 国产亚洲欧美精品久久久| 精品久久精品午夜精品久久| 久久久久国产精品人妻| 国产免费播放一区二区三区| 国产欧美va欧美va在线| 国内精品久久久久影院薰衣草| 免费无码黄十八禁网站|