什麼是程式集

2021-10-21 01:49:31 字數 1763 閱讀 9878

這一章的內容參考自微軟文件

程式集是為協同工作而生成的型別和資源的集合,這些型別和資源構成了乙個邏輯功能單元,構成了.net應用程式的部署、版本控制、重用、啟用範圍和安全許可權的基本單元。程式集採用可執行檔案(.exe)或動態鏈結檔案(.dll)的形式,是.net應用程式的構建基塊。

程式集定義以下資訊:

公共語言執行時執行的**

安全邊界

型別邊界

引用範圍邊界

版本邊界

部署單元

並行執行單元

程式集可以為靜態或動態。靜態程式集儲存在磁碟上的可遷移可執行(pe、portable excusable)檔案中。靜態程式集可以包括介面、類和資源(圖等);動態程式集直接從記憶體執行並且在執行前不儲存到磁碟上。

建立方式:在 visualstudio 中生成程式集,在「生成」選單上選擇「生成」;使用clr的api(如system.reflection.emit)建立動態程式集。

靜態程式集可包含以下四個元素:

程式集清單,包含程式集元資料。(必需)

程式集清單包含指定該程式集的版本要求和安全標識所需的所有元資料,以及定義該程式集的範圍和解析對資源和類的引用所需的全部元資料。

程式集使用強名稱或簽名工具對程式集進行簽名,來確認**的真實性。使用公共語言執行時的程式集的所有版本控制都在程式集級別上進行。強命名乙個程式集可為程式集建立唯一的標識,並且可以防止程式集衝突。在反射裡面,load載入可傳引數"generatordll, version=1.0.0.0, culture=neutral, publickeytoken=b5d227075cfdc732",引數內容分別是:dll名稱、版本、文化/地域、公匙(強命名簽名)

型別元資料

中間**(msil)

資源集程式集的位置決定公共語言執行時是否可以在引用該程式集時找到它,也可以決定是否可與其他程式集共享該程式集。

應用程式的目錄或子目錄

應用程式根目錄的子目錄可以基於語言或區域性,如果程式集具有culture(語言)特性中的資訊,則它必須位於帶有該區域性名稱的應用程式目錄下的子目錄中。

全域性程式集快取(gac,global assembly cache)

這是安裝於公共語言執行時安裝位置的計算機範圍內的**快取。大多數情況下,如果要與多個應用程式共享程式集,應將程式集部署到全域性程式集快取中。可以通過在配置檔案中使用元素替代公共語言執行時查詢某一程式集的位置。

在http伺服器上

部署在http伺服器上的程式集必須具有強名稱,請在應用程式配置檔案的基本**節中指向此程式集。

共享位置

檔案安全

並行版本

其他搜尋位置

應用程式域與程式集,看得懂,說不清。理解就是將程式集載入到應用程式域裡面,然後就會執行相應的**,應用程式域可以主動建立、解除安裝,以及引導程式集等。

微軟文件:應用程式域為clr提供隔離單元,在程序中建立和執行。應用程式域通常由執行時宿主( runtime host)建立,執行時宿主是一種應用程式,負責向程序載入執行時,並在應用程式域執行使用者**。無需建立自己的應用程式域,執行時主機將為你建立任何所需的應用程式域,但是如果應用程式需要隔離**或使用和解除安裝dll,則可以建立和配置額外的應用程式域。

本來是想就看一下的,然後想還是抄一下吧,順帶把示例的**敲一下,這些東西掰碎了,就是一些概念性的東西,等到了真的需要用才會用,可,多看多學嘛。軟體開發嘛,有些事,碼農可以,程式設計師不行。

如何:使用強名稱為程式集簽名

演練:在visual studio中嵌入託管程式集中的型別

什麼是程式集

程式集是 net 框架應用程式的主要構造塊。它是乙個功能集合,並以單個實現單元 乙個或多個檔案 的形式生成 版本化和部署。所有託管型別和資源或者只在其實現單元中標記為可訪問,或者在該單元外由 標記為可訪問。程式集通過其清單 每個程式集不可缺少的部分 進行自我描述。清單可以 建立程式集標識 以文字名稱...

什麼是程式集?

程式集是 net 框架應用程式的主要構造塊。它是乙個功能集合,並以單個實現單元 乙個或多個檔案 的形式生成 版本化和部署。所有託管型別和資源或者只在其實現單元中標記為可訪問,或者在該單元外由 標記為可訪問。程式集通過其清單 每個程式集不可缺少的部分 進行自我描述。清單可以 建立程式集標識 以文字名稱...

什麼是Assembly 程式集

assembly是乙個包含來程式的名稱,版本號,自我描述,檔案關聯關係和檔案位置等資訊的乙個集合。在.net框架中通過assembly類來支援,該類位於system.reflection下,物理位置位於 mscorlib.dll。assembly能幹什麼?我們可以通過assembly的資訊來獲取程式...