應用程式組態檔
應用程式組態檔是用來控制元件系結的 XML 檔案。 它可以將應用程式從使用某個版本的並存元件重新導向至相同元件的另一個版本。 這稱為 個別應用程式組態。 應用程式組態檔僅適用於特定的應用程式指令清單和相依元件。 使用內嵌ISOLATIONAWARE_MANIFEST_RESOURCE_ID指令清單編譯的隔離元件需要個別的應用程式組態檔。 使用 createActCtx 管理的指令清單 需要個別的應用程式組態檔。
應用程式元件檔所指定的重新導向可以覆寫 應用程式指令清單所指定的元件版本, 和 發行者組態檔。 例如,如果發行者組態檔指定將元件的所有參考從 1.0.0.0 版重新導向至 1.1.0.0,則可以使用應用程式組態檔將特定應用程式重新導向至使用 1.0.0.0 版。 應用程式組態檔只適用於指定的應用程式指令清單和相依元件。
如需 XML 架構的完整清單,請參閱 應用程式組態檔架構。
應用程式組態檔具有下表所示的元素和屬性。
元素 | 屬性 | 必填 |
---|---|---|
組態 | 是的 | |
視窗 | 是的 | |
publisherPolicy | 是的 | |
套用 | 是的 | |
執行時間 | 不 | |
assemblyBinding | 是的 | |
探查 | 不 | |
privatePath | 是的 | |
相依性 | 不 | |
dependentAssembly | 是的 | |
assemblyIdentity | 是的 | |
類型 | 是的 | |
名稱 | 是的 | |
語言 | 不 | |
processorArchitecture | 是的 | |
版本 | 是的 | |
publicKeyToken | 不 | |
bindingRedirect | 是的 | |
oldVersion | 是的 | |
newVersion | 是的 |
檔案位置
應用程式組態檔必須安裝在與應用程式 應用程式指令清單相同的位置,。
檔名語法
應用程式組態檔的名稱是應用程式可執行檔的名稱,後面接著 .config。
例如,參考 Example.exe 或 Example.dll 的應用程式組態檔會使用下列範例所示的檔名語法。 如果將組態檔安裝為個別檔案,或資源標識符為 1,您可以省略 <資源識別符的字段>。
example.exe。<資源標識碼>.config
example.dll。<資源標識碼>.config
元素
元素和屬性的名稱會區分大小寫。 元素和屬性的值全都不區分大小寫,但類型屬性的值除外。
配置
視窗 和 運行時間的容器元素, 應用程式組態檔的元素。 必填。
窗戶
包含套用至 Win32 元件重新導向的應用程式組態檔部分。
注意
應用程式的作者不應該在其應用程式中包含具有 視窗 子元素的組態檔。 如果組態檔的唯一用途是啟用 探查 專案的 privatePath 功能,則可能會允許這樣做。 探查 元素無法在 Windows Server 2008 R2 和 Windows 7 之前的系統上使用。
publisherPolicy
指定是否要套用發行者原則。
此元素具有下表所示的屬性。
屬性 | 描述 |
---|---|
套用 | 值為 「yes」 會套用發行者原則。 這是預設設定。 值 「no」 不會套用發行者原則。 |
運行
包含套用至 .Net 元件重新導向的應用程式組態檔部分。
assemblyBinding
包含應用程式的重新導向資訊,以及受此應用程式組態檔影響的元件。 assemblyBinding 的第一個子元素必須是識別應用程式的 assemblyIdentity。
從 Windows Server 2008 R2 和 Windows 7 開始,assemblyBinding 元素可以包含 探查 子元素。
探討
assemblyBinding 元素的選擇性子元素,會將元件搜尋延伸至其他目錄。 其他目錄不一定是元件目錄的子目錄。
注意
此元素無法在 Windows Server 2008 R2 和 Windows 7 之前的系統上使用,而且只能在 windows 元素中使用。
此元素具有下表所示的屬性。
屬性 | 描述 |
---|---|
privatePath | 指定可能包含元件之應用程式基底目錄之子目錄 相對路徑。 最多可以指定九個子目錄路徑。 使用分號分隔每個子目錄路徑。 |
您可以在路徑中使用雙點特殊規範來表示目前目錄的父目錄。 使用雙點可以指定超過目前目錄的兩個層級。 請勿使用三點。 例如,使用下列 探查 項目的應用程式會檢查元件的其他目錄。
<probing privatePath="bin;..\bin2\subbin;bin3"/>
屬地
至少一個 dependentAssembly 的容器元素。 每個 dependentAssembly 都只能位於一個 相依性內。 這個項目沒有屬性。 自選。
dependentAssembly
第一個子元素必須是 assemblyIdentity 元素,可識別應用程式組態檔所重新導向的並存元件。 dependentAssembly 沒有屬性。
assemblyIdentity
assemblyBinding 專案的第一個子元素,assemblyIdentity 描述並唯一識別應用程式。 應用程式組態檔會將此應用程式的系結重新導向至並存元件。 例如,下列 assemblyIdentity 表示應用程式組態檔會影響應用程式 mysampleApp 與並存元件的系結。 重新導向的元件會在 dependentAssembly中識別。
<assemblyIdentity processorArchitecture="X86" name="Microsoft.Windows.mysampleApp" type="win32" version="1.0.0.0"/>
作為 dependentAssembly 元素的第一個子元素,assemblyIdentity 描述應用程式相依的並存元件。 應用程式組態檔會重新設定此必要元件的身分識別。 例如,下列 assemblyIdentity 和 bindingRedirect 會將相依性從 2.0.0.0 版重新設定為 2.1.0.0 版的 Microsoft.Windows.SampleAssembly。
<dependency>
<dependentAssembly>
<assemblyIdentity type="win32"
name="Microsoft.Windows.SampleAssembly"
processorArchitecture="x86"
publicKeyToken="0000000000000000"/>
<bindingRedirect oldVersion="2.0.0.0" newVersion="2.1.0.0"/>
</dependentAssembly>
</dependency>
請注意,dependentAssembly 中包含的每個 assemblyIdentity,都必須完全符合元件本身 指令清單中 assemblyIdentity。
assemblyIdentity 元素具有下列屬性。 它沒有子元素。
屬性 | 描述 |
---|---|
類型 | 此值必須是 win32 (小寫)。 必填。 |
名稱 | name 屬性會識別應用程式組態檔或重新導向的元件所影響的應用程式。 針對名稱使用下列格式:Organization.Division.Name。 必填。 例如:Microsoft.Windows.MysampleApp 或 Microsoft.Windows.MysampleAsm。 |
語言 | 識別語言。 自選。 如需 assemblyIdentity 參考元件,如果元件是特定語言,請指定 DHTML 語言程序代碼。 如果元件是供全球使用(語言中性),請將值設定為 “*”。 |
processorArchitecture | 指定執行應用程式的處理器。 |
版本 | 指定應用程式或元件的版本。 使用四部分版本語法:mmmm.nnnn.oooo.pppp。 必填。 |
publicKeyToken | 對於參考元件的 assemblyIdentity,16 個字元的十六進位字元串,代表簽署元件所在公鑰 SHA-1 哈希的最後 8 個字節。 用來簽署目錄的公鑰必須是 2048 位或更高。 所有共用並存元件的必要專案。 |
bindingRedirect
bindingRedirect 專案包含元件的系結重新導向資訊。 每個 bindingRedirect 必須只包含在一個 dependentAssembly中。 新版本和舊版的四部分版本語法必須指定相同的主要和次要版本。
此元素具有下表所示的屬性。
屬性 | 描述 |
---|---|
oldVersion | 指定要覆寫和重新導向的元件版本。 使用四部分版本語法 nnnnn.nnnnn.nnnnn.nnnnn。 以虛線指定版本範圍,不含空格。 例如,2.14.3.0 或 2.14.3.0 2.16.0.0。 必填。 |
newVersion | 指定取代元件版本。 使用四部分版本語法 nnnnn.nnnnn.nnnnn.nnnnn。 |
言論
應用程式組態檔未指定檔案。
例
<bindingRedirect oldVersion="1.0.0.0" newVersion="1.0.10.0"/>
<bindingRedirect oldVersion="1.0.50.2011-1.0.60.65535" newVersion="1.0.70.0"/>