程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> .NET實例教程 >> .net中的dll搜索路徑

.net中的dll搜索路徑

編輯:.NET實例教程
一直以為.Net的dll搜索路徑和VC一樣,設麼Path路徑、系統路徑什麼的。但是居然發現不一樣。
可惜不是計算機專業,只好亂找了。

我印象當中,dll的路徑要麼是exe目錄,要麼是GAC,要麼是config文件指定的目錄。可惜config只能提供給exe使用,dll沒有cinfig(可是MSDN上說可以,但是我不知道怎麼弄)。
   
   第一部分(概念)
   托管模塊(Managed Module)
   托管模塊是一個需要CLR才能執行的標准Windows可移植可執行(portable executable,簡稱PE)文件。
  
   元數據(Metadata)
   簡單的講,元數據就是一個數據表的集合,在這些表中,其中一些用於
   描述托管模塊中所定義的內容(比如所定義的類型和它們的成員),另外還有一些
   用於描述托管模塊中所引用的內容(比如被引用的類型和它們的成員)。
   URL: ms-help://MS.MSDN
   QTR.2004APR.1033/cpguide/Html/cpconmetadataovervIEw.htm
  
   程序集清單(Assembly Manifest
   程序集清單是另外一些元數據表的集合。這些表描述了組成程序集的文件,
   程序集所有文件中實現的公有導出類型,以及一些程序集相關的資源文件或數據文件。
   ms-help://
   MS.MSDNQTR.2004APR.1033/cpguide/Html/cpconAssemblyManifest.htm
  
   1.程序集(Assembly)的概念:
   首先:程序集是一個或多個托管模塊,以及一些資源文件的邏輯組合。因為它是一個邏輯上的組合,所以程序集的邏輯表示和物理表示可以相互分離。如何將代碼和資源劃分到不同的文件中完全取決於我們。例如,我們可以將一些很少使用的類型或資源放在一個單獨的Assembly Module中,然後根據需要(比如第一次用到的時候),從web上下載它們。如果沒有用到,它們將不會被下載。這樣既節省磁盤空間,也減少了安裝時間。程序集允許我們將文件的部署分解開來,同時又將所有的文件看作一個單獨的集合。
   其次:因為CLR是直接和程序集打交道的,所以程序集也是組件復用,以及實施安全策略和版本策略的最小單元(安全策略,版本信息等都只能是加在程序集上)。
  
   注意:程序集是一個邏輯組合,它可以包含很多個文件。大多數程序集(比如使用Visual Studio.NET創建的那些)一般都是單文件程序集,也就是只有一個.exe或者.dll文件(目前.Net的程序集只有這兩種格式)。在這種情況下,程序集清單(manifest)直接嵌入到單文件程序集中。但是,你也可以用“程序集生成工具”(Al.exe)來創建多文件程序集。也可以只創建一個只包含清單的程序集。
  
   2.強命名程序集(Strong Name Assembly)的概念
   因為不同的公司可能會開發出有相同名字的程序集來,如果這些程序集都被復制到同一 個相同的目錄下,最後一個安裝的程序集將會代替前面的程序集。這就是著名的Windows “DLL Hell”出現的原因。
  
   很明顯,簡單的用文件名來區分程序集是不夠的,CLR需要支持某種機制來唯一的標識一個程序集。
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved