共用方式為


(3) 私密元件路徑

前述 Client 範例有一項很重要的缺點:Client.exe 和 Stringer.dll 必須常駐在相同的目錄中。不過實際上我們多半會使用目錄結構來管理元件。.NET Framework 提供的組態機制,能讓系統管理員指定一個目錄用來載入私密元件。

前述 Client 範例中建置的 3_SimplePath 子目錄中有一個程式版本,它使用私密目錄。所有原始程式碼都相同,不過為了便於說明,建置處理序經過修改後,是在 Stringer 子目錄中建置 Stringer.dll:

csc /target:library /out:Stringer\Stringer.dll  
   ... Stringer\Stringer.cs
csc /reference:Stringer\Stringer.dll ... Client.cs

編譯程式時,/reference: 編譯選項負責尋找子目錄中的元件,但是 Run Time 時還需要另一個 XML 架構應用程式組態檔來支援其他目錄中的元件。用戶端執行檔 (就像這個教學課程中的用戶端執行檔) 的組態檔和可執行檔,常駐在相同的目錄中,可執行檔的完整名稱中含另一個副檔名 .config。Client.exe.config 範例檔,指定 privatePath 標記:

清單 1 Client.exe 的組態檔 (Client.exe.config)

<configuration>   
  <runtime>
    <assemblyBinding
       xmlns="urn:schemas-microsoft-com:asm.v1">
       <probing privatePath="Stringer"/>
    </assemblyBinding>
  </runtime>
</configuration>

這個組態檔放在可執行檔目錄中後,Run Time 時,.NET 環境使用 privatePath 標記來判斷元件的尋找位置 - 除了尋找應用程式的目錄之外。

**注意   **載入組件時,Runtime 也會搜尋和組件同名的私密路徑。

請參閱

使用私密路徑部署應用程式 | (4) 共用元件 | (5) 元件版本控制 | 封裝和部署摘要 | 附錄 A:其他封裝和部署資訊 | 附錄 B:封裝和部署工具