Time of Update: 2018-12-07
Time of Update: 2018-12-07
前面我們有一篇“如何修複.Net和COM之間枚舉名稱的問題”,按照那篇文章的方法做可以解決編譯問題,但是啟動並執行時候會出現run-time error “429” , ActiveX不能建立的問題,關鍵問題是因為.net程式集沒有註冊的原因造成的,需要通過regasm註冊一下就解決了。具體操作步驟是: 1 編寫您需要.net程式 2 使用以下批處理來匯出tlb檔案@echo Off set binDir="C:\Program Files\Microsoft
Time of Update: 2018-12-07
$.extend($.fn.datagrid.methods, { addEditor : function(jq, param) { if (param instanceof Array) { $.each(param, function(index, item) { var e = $(jq).datagrid('getColumnOption', item.field); e.editor
Time of Update: 2018-12-07
返回目錄 代碼壓縮 出現在前面章節的程式碼範例是壓縮的。如果你不相信我,進行一個簡單的實驗:用你喜歡的進階別Microsoft
Time of Update: 2018-12-07
前言:當我們定義介面的成員的時候不需要寫存取控制符,因為它是預設public的,也只能是public。當一個類要實現這個介面的時候,自然要公開其成員。一直以來我都這麼做。Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/--> interface Interface1 { string GetName(string name); }
Time of Update: 2018-12-07
返回目錄 這一章簡單接觸了CLR和ILAsm中的最重要特性。現在你(大體上)知道了如何寫一個運行時方法和如何用ILAsm寫一個程式,以及如何定義基本的組件(類,欄位和方法)。你認識到Managed 程式碼可以和非託管(本地)代碼互操作以及CLR如何促進這種互操作的。 在下一章,你將會繼續工作在這個簡單的OddOrEven樣本,從而瞭解關於運行時和ILAsm的一些進階特性。
Time of Update: 2018-12-07
返回目錄 這一節只是相關於ILASM的早期版本(1.0和1.1),但是我仍然認為這是有用的資訊。考慮一下這些.NET Framework版本的基本大小,你將會不止一次的遇到與這些ILASM的老版本打交道的機會。 如果你安裝了.NET Framework的早期版本,你可以對這個程式碼範例執行一些實驗。在任意文字編輯器中開啟這個源檔案Simple.il並作出如下修改:將對實值型別CharArray8的聲明移動到欄位Format的前面:Code highlighting
Time of Update: 2018-12-07
返回目錄 全域項 以下是OddOrEven應用程式的全域項:Code highlighting produced by Actipro CodeHighlighter
Time of Update: 2018-12-07
今天無意間看到了靜態建構函式的代碼,也許是沒怎麼見過,覺得新鮮,就順手寫了以下代碼,或許我見過,或許我忘記了……呵呵,發布上來自己作個紀念……發現用來做Singleton模式倒是不錯,呵呵……using System;namespace CA_StaticConstructor{ class StaticClass { public static StaticClass Instance { get; set; } public string Name {
Time of Update: 2018-12-07
有一位朋友在看了我有關List<T>的介紹後, 覺得List<T>的功能很強大, 於是乎看到集合就想用它.不過之前一直提倡Design to interface, 按照這樣的思想我們在變數的聲明(declare)以及方法的簽名(signature)中還是應該儘可能的使用IList<T>.
Time of Update: 2018-12-07
(聲明:本系列只想給大家介紹.net架構,並不是文法和類的使用的講解,所以只能概括的描述一下所提到的類,如果有疑問可以到MSDN上面去查) WCF是對於Webservice,.Net Remoting,Enterprise
Time of Update: 2018-12-07
返回目錄 這一章提供了對ILAsm——MSIL編譯語言的基本概述。(MSIL表示Microsoft中繼語言,稍後將在本章討論。)本章回顧了一個用ILAsm寫的相對簡單的程式,隨後我建議作一些改動來舉例說明:如何用ILAsm表示Microsoft
Time of Update: 2018-12-07
(聲明:本系列只想給大家介紹.net架構,並不是文法和類的使用的講解,所以只能概括的描述一下所提到的類,如果有疑問可以到MSDN上面去查) WPF可以認為是MS利用原有.NET架構的一些特色,加上DirextX的產物。將原有的編程模型統一化.我們來看看WPF的運行機制. 那麼我們現在來分析一下WPF的運行過程吧。 首先從第一個方塊說起:WPF的進程會載入四個程式集,Kernel,User32,DirectX,milcore.他們對原有的CLR進行了擴充。我們看看
Time of Update: 2018-12-07
(聲明:本系列只想給大家介紹.net架構,並不是文法和類的使用的講解,所以只能概括的描述一下所提到的類,如果有疑問可以到MSDN上面去查)
Time of Update: 2018-12-07
返回目錄 File中繼資料表和聲明File中繼資料表描述了在當前模組宗引用到的同一個程式集的其它檔案。在單模組程式集中,這個表是空的(除非你想要詳細指明非託管DLL作為你的部屬的一部分,正如在本章前面所描述的)。這個表有如下的列結構: Flags(4位元組寬位域):描述檔案特徵的二進位標記。為了將來使用,這個入口總是保留的,當前定義的唯一標記是ContainNoMetaData(0x00000001)。這個標記指出正被討論的檔案鄙視一個託管的PE檔案而是一個純的資源檔。Name(#
Time of Update: 2018-12-07
返回目錄 小結既然你已經瞭解中繼資料原則上是如何被組織的,你要準備好檢測這些特定的中繼資料項和表示它們的表。所有進一步的考慮都將集中在4個中繼資料流上——#Strings、#Blob、#US和#~——因為#GUID只在一個中繼資料表中被引用到(Module表),而#-流(未最佳化的中繼資料)則從來不會被ILAsm編譯器發布。這裡對一些人有一些建議,他們想知道這是否一個好的主意——在細微操作中繼資料的借口下,欺騙中繼資料頭從而有權訪問超越中繼資料之上的資料:忘記他!CLR載入器在分析中繼資料頭的一
Time of Update: 2018-12-07
返回目錄 中繼資料和驗證然而,這個“好的暗示”,僅僅是一個暗示。在前述的部分提供了關於你可以從一個列的確定的類型引用哪些表的資訊。這並不意味著你應該引用所有你能夠引用的表。在表5-10中列出的一些群組的符號類型比在CLR現有的發布版本中實際上可接受的要更加廣闊。例如,MemberRefParent群組,描述了能夠包含MemberRef記錄的父層級的表,包括TypeDef表。但是這個中繼資料發佈API不會接受TypeDef符號作為MemberRef的父層級符號;並且即使這樣的中繼資料不知何故還是發
Time of Update: 2018-12-07
返回目錄 本章對中繼資料及其構造方式進行了概述。也還描述了中繼資料驗證。後面的章節將會分析單獨的中繼資料項——基於這裡所表示的基礎。我理解你可能的急躁——“這個傢伙不要拖延時間,什麼時候才能進入正題?”——但是我仍然奉勸你不要跳過本章。遠遠不是拖時,我只是系統地接近這個對象。這看上去可能是一樣的,但是動機是完全不同的,而這正是我所關心的。 什麼是中繼資料?中繼資料的定義:描述資料的資料。然而,就像每個通常的定義一樣,這個定義並沒有豐富的資訊。在CLR的上下文中,中繼資料表示由描述符組成的一套體系
Time of Update: 2018-12-07
返回目錄 小結討論過託管映像檔案的結構以及IL編譯器產生這些檔案的方式,我將小結一下IL編譯器建立一個託管PE檔案的步驟。PE檔案的建立表現為以下4個步驟: 步驟1:初始化1. 初始化內部緩衝器2. 在記憶體建立一個PE檔案的空模板,包括MS-DOS頭和stub、PE簽名、COFF頭和PE頭。3. 輸入地址表和CLR頭被分配在.text區段中。步驟2:原始碼的文法分析1. 中繼資料被收集在內部緩衝器中。2.
Time of Update: 2018-12-07
返回目錄 不要忘記本章討論的特性只在ILAsm 2.0中受到支援。 前三章確實有助於一個快速的開始。我答應過你以輕騎兵的速度沖入敵人的陣營,而你已經恰好達到了目的。到目前為止,你應該能夠大體上理解IL反編譯器產生的文本輸出。我也希望你能對更加細節和系統的討論感興趣,如在CLR內部發生了什麼以及如何在ILAsm中描述它。 從現在開始,下面的內容都是關於細節的和系統的。不會再有騎兵式的衝擊了。