應用程式組態檔
應用程式組態檔是用來控制元件系結的 XML 檔案。 它可以將應用程式從使用一個並存元件版本重新導向至另一個版本的相同元件。 這稱為 個別應用程式組態。 應用程式組態檔只適用于特定的應用程式資訊清單和相依元件。 使用內嵌ISOLATIONAWARE_MANIFEST_RESOURCE_ID資訊清單編譯的隔離元件需要個別的應用程式組態檔。 使用 CreateActCtx 管理的資訊清單需要個別的應用程式組態檔。
應用程式組態檔所指定的重新導向可以覆寫 應用程式資訊清單 和 發行者組態檔所指定的元件版本。 例如,如果發行者組態檔指定將元件的所有參考從 1.0.0.0 版重新導向至 1.1.0.0 版,則應用程式組態檔可用來將特定應用程式重新導向至使用 1.0.0.0 版。 應用程式組態檔只適用于指定的應用程式資訊清單和相依元件。
如需 XML 架構的完整清單,請參閱 應用程式組態檔架構。
應用程式組態檔具有下表所示的元素和屬性。
項目 | 屬性 | 必要 |
---|---|---|
設定 | Yes | |
windows | Yes | |
publisherPolicy | Yes | |
應用 | Yes | |
執行階段 | No | |
assemblyBinding | Yes | |
探討 | No | |
privatePath | Yes | |
依賴 | No | |
dependentAssembly | Yes | |
assemblyIdentity | 是 | |
type | 是 | |
name | Yes | |
language | No | |
processorArchitecture | 是 | |
version | Yes | |
publicKeyToken | No | |
bindingRedirect | Yes | |
oldVersion | Yes | |
newVersion | Yes |
檔案位置
應用程式組態檔必須安裝在與 應用程式應用程式資訊清單相同的位置。
檔名語法
應用程式組態檔的名稱是應用程式可執行檔的名稱,後面接著.config。
例如,參考Example.exe或Example.dll的應用程式組態檔會使用下列範例所示的檔案名語法。 如果將組態檔安裝為個別檔案,或資源識別碼為 1,您可以省略資源識別碼的欄位 >< 。
example.exe。 <資源識別碼>.config
example.dll。 <資源識別碼>.config
元素
專案和屬性的名稱會區分大小寫。 元素和屬性的值全都不區分大小寫,但類型屬性的值除外。
組態
應用程式組態檔 之視窗 和 執行時間 專案的容器專案。 必要。
windows
包含套用至 Win32 元件重新導向的應用程式組態檔部分。
注意
應用程式的作者不應在其應用程式中包含 具有 Windows 子項目的組態檔。 如果組態檔的唯一用途是啟用探查專案的privatePath功能,可能會允許此情況。 探 查 元素在 Windows Server 2008 R2 和 Windows 7 之前的系統上無法使用。
publisherPolicy
指定是否要套用發行者原則。
這個專案具有下表所示的屬性。
屬性 | Description |
---|---|
應用 | 值為 「yes」 會套用發行者原則。 這是預設值。 值 「no」 不會套用發行者原則。 |
執行階段
包含套用至 .Net 元件重新導向之應用程式組態檔的部分。
assemblyBinding
包含應用程式的重新導向資訊,以及受此應用程式組態檔影響的元件。 assemblyBinding的第一個子項目必須是識別應用程式的assemblyIdentity。
從 Windows Server 2008 R2 和 Windows 7 開始, assemblyBinding 元素可以包含 探查 子項目。
探查
assemblyBinding專案的選擇性子項目,會將搜尋元件延伸至其他目錄。 其他目錄不需要是元件的目錄子目錄。
注意
此元素無法在 Windows Server 2008 R2 和 Windows 7 之前的系統上使用,而且只能在 Windows 元素中使用。
這個專案具有下表所示的屬性。
屬性 | Description |
---|---|
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"/>
assemblyIdentity是dependentAssembly元素的第一個子項目,描述應用程式相依的並存元件。 應用程式組態檔會重新設定此必要元件的身分識別。 例如,下列 assemblyIdentity 和 bindingRedirect 會將 Microsoft.Windows.SampleAssembly 的相依性從 2.0.0.0 版重新設定為 2.1.0.0 版。
<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元素具有下列屬性。 它沒有子項目。
屬性 | 描述 |
---|---|
type | 此值必須是 win32 (小寫) 。 必要。 |
name | name 屬性會識別受應用程式組態檔影響的應用程式,或重新導向的元件。 針對名稱使用下列格式:Organization.Division.Name。 必要。 例如:Microsoft.Windows.MysampleApp 或 Microsoft.Windows.MysampleAsm。 |
language | 識別語言。 選擇性。 針對參照元件的 assemblyIdentity ,如果元件是語言特定的,請指定 DHTML 語言程式碼。 如果元件適用于全球使用 (語言中性) 請將值設定為 「*」。 |
processorArchitecture | 指定執行應用程式的處理器。 |
version | 指定應用程式或元件的版本。 使用四部分版本語法:mmmm.nnnn.oooo.pppp。 必要。 |
publicKeyToken | 針對參照元件的 assemblyIdentity ,16 個字元的十六進位字串,代表元件簽署所在公開金鑰 SHA-1 雜湊的最後 8 個位元組。 用來簽署目錄的公開金鑰必須是 2048 位或更新版本。 所有共用的並存元件都需要。 |
bindingRedirect
bindingRedirect元素包含元件系結的重新導向資訊。 每個 bindingRedirect 必須只包含在一個 dependentAssembly 中。 新版本和舊版的四部分版本語法必須指定相同的主要和次要版本。
此元素具有下表所示的屬性。
屬性 | Description |
---|---|
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"/>