通常,靜態程式集可能由以下四個元素組成:
只有程式集清單是必需的,型別或資源向程式集提供任何有意義的功能。
程式集中的這些元素有兩種劃分方法。可以將所有元素放在單個物理檔案中。
或將乙個元素包含在幾個檔案中。這些檔案可能是編譯**的模組
(.netmodule)
、資源(例如
.bmp
或.jpg
檔案)或應用程式所需的其他檔案。在您希望組合以不同語言編寫的模組,並優化應用程式的載入過程時,可建立乙個多檔案程式
集,優化載入過程的方法是將很少使用的型別放在只需要時才載入的模組中。如下圖所示。
上圖左,開發人員將一些實用工具**單獨放入另乙個模組中,同時在其原檔案中保留乙個較大的資源檔案(在此例中為乙個
.bmp
影象)。
.net
框架只在檔案被引用時載入該檔案;通過將很少引用的**保留在獨立於應用程式的檔案中來優化**載入。
上圖右,所有三個檔案均屬於乙個程式集,如
myassembly.dll
所包含的程式集清單檔案中所述。對於該檔案系統,這三個檔案是三個獨立的檔案。請注意,檔案
util.netmodule
被編譯為乙個模組,因為它不包含任何程式集資訊。在建立程式集後,該程式集清單被新增到
myassembly.dll
,指示程式集與
util.net
模組和graphic.bmp
的關係。
程式集清單
每一程式集,無論是靜態的,還是動態的,均包含描述該程式集中各元素之間如何關聯的資料集合。程式集清單包含指定該程式集的版本要求和安全標識所需的所有元資料,以及定義該程式集的範圍和解析對資源和類的引用所需的全部元資料。程式集清單可以儲存在具有
microsoft
中間語言
(msil)
**的pe
檔案(.exe
或.dll
)中,也可儲存在只包含程式集清單資訊的獨立
pe 檔案中。
以下插圖顯示了清單的不同儲存方法。
對於只有乙個關聯檔案的程式集,該清單將被合併到
pe 檔案中以構成單檔案程式集。也可以建立獨立的清單檔案,或清單被合併到同一多檔案程式集中某一
pe 檔案的多檔案程式集。
每一程式集的清單均執行以下功能:
下表顯示了在程式集清單中包含的資訊。前四項(程式集名稱、版本號、區域性和強名稱資訊)構成了程式集的標識。
資訊說明
程式集名稱
指定程式集名稱的文字字串。
版本號主版本號和次版本號,以及修訂號和內部版本號。公共語言執行庫使用這些編號來強制實施版本策略。
區域性有關該程式集支援的區域性或語言的資訊。此資訊只應用於將乙個程式集指定為包含特定區域性或特定語言資訊的附屬程式集。(具有區域性資訊的程式集被自動假定為附屬程式集。)
強名稱資訊
如果已經為程式集提供了乙個強名稱,則為來自發行者的公鑰。
程式集中所有檔案的列表
在程式集中包含的每一檔案的雜湊及檔名。請注意,構成程式集的所有檔案所在的目錄必須是包含該程式集清單的檔案所在的目錄。
型別引用資訊
執行庫用來將型別引用對映到包含其宣告和實現檔案的資訊。該資訊用於從程式集匯出的型別。
有關被引用程式集的資訊
該程式集靜態引用其他程式集的列表。如果依賴的程式集具有強名稱,則每一引用均包括該依賴程式集的名稱、程式集元資料(版本、區域性、作業系統等)和公鑰。
通過在**中使用程式集屬性,您可以新增或更改程式集清單中的一些資訊,如更改版本資訊和資訊性屬性,包括商標、版權、產品、公司和資訊性版本。
公共語言執行庫中的程式集 04強命名的程式集
強命名是由程式集的標識加上公鑰和數字簽名組成的。其中,程式集的標識包括簡單文字名稱 版本號和區域性資訊 如果提供的話 強命名是使用相應的私鑰,通過程式集檔案 包含程式集清單的檔案,構成該程式集的所有檔案的名稱和雜湊 生成的。microsoft visual studio net 和windows s...
公共語言執行庫中的程式集 04強命名的程式集
強命名是由程式集的標識加上公鑰和數字簽名組成的。其中,程式集的標識包括簡單文字名稱 版本號和區域性資訊 如果提供的話 強命名是使用相應的私鑰,通過程式集檔案 包含程式集清單的檔案,構成該程式集的所有檔案的名稱和雜湊 生成的。microsoft visual studio net 和windows s...
公共語言執行庫中的程式集 05程式集安全注意事項
在您生成程式集時,您可以指定該程式集執行所需的一組許可權。是否將特定的許可權授予程式集是基於證據的。使用證據有兩種截然不同的方式 通過在將執行程式集的計算機上設定安全策略 您可以授予一些可選的許可權。如果您希望 可以處理所有潛在的安全異常,可以執行以下操作之一 說明 安全性是乙個較為複雜的領域,您將...