应用程序配置文件

应用程序配置文件是用于控制程序集绑定的 XML 文件。 它可以将应用程序从使用并行程序集的一个版本重定向到同一程序集的另一个版本。 这称为 “按应用程序配置”。 应用程序配置文件仅适用于特定的应用程序清单和依赖程序集。 使用嵌入式ISOLATIONAWARE_MANIFEST_RESOURCE_ID清单编译的独立组件需要单独的应用程序配置文件。 使用 CreateActCtx 管理的清单需要单独的应用程序配置文件。

应用程序配置文件指定的重定向可以替代 应用程序清单发布者配置文件指定的程序集版本。 例如,如果发布者配置文件指定对程序集的所有引用都从版本 1.0.0.0 重定向到 1.1.0.0,则应用程序配置文件可用于重定向特定应用程序以使用版本 1.0.0.0。 应用程序配置文件仅适用于指定的应用程序清单和依赖程序集。

有关 XML 架构的完整列表,请参阅 应用程序配置文件架构

应用程序配置文件的元素和属性如下表所示。

元素 属性 必须
configuration
windows
publisherPolicy
apply
运行时
assemblyBinding
探讨
privatePath
依赖
dependentAssembly
assemblyIdentity
type
name
language
processorArchitecture
version
publicKeyToken
bindingRedirect
oldVersion
newVersion

文件位置

应用程序配置文件必须安装在与应用程序 的应用程序清单相同的位置。

文件名语法

应用程序配置文件的名称是应用程序可执行文件的名称,后跟.config。

例如,引用 Example.exe 或 Example.dll 的应用程序配置文件将使用以下示例中显示的文件名语法。 如果将配置文件安装为单独的文件,或者资源 ID> 为 < 1,则可以省略资源 ID 的字段。

example.exe。<资源 ID>.config

example.dll。<资源 ID>.config

元素

元素和属性的名称区分大小写。 元素和属性的值不区分大小写,类型属性的值除外。

配置

应用程序配置文件的 Windows运行时 元素的容器元素。 必需。

windows

包括应用程序配置文件中应用于 Win32 程序集重定向的部分。

注意

应用程序的作者不应将包含 Windows 子元素的配置文件作为其应用程序的一部分。 如果配置文件的唯一用途是启用探测元素的 privatePath 功能,则可能允许这样做。 探测元素在低于 Windows Server 2008 R2 和 Windows 7 的系统上不可用。

publisherPolicy

指定是否应用发布者策略。

此元素具有下表所示的属性。

属性 说明
apply 值为“yes”将应用发布者策略。 这是默认设置。 值“no”不应用发布者策略。

Runtime — 运行时

包括适用于 .Net 程序集重定向的应用程序配置文件的各个部分。

assemblyBinding

包括应用程序的重定向信息以及受此应用程序配置文件影响的程序集。 assemblyBinding 的第一个子元素必须是用于标识应用程序的 assemblyIdentity

从 Windows Server 2008 R2 和 Windows 7 开始, assemblyBinding 元素可以包含 探测 子元素。

探测

assemblyBinding 元素的可选子元素,用于将程序集的搜索扩展到其他目录。 附加目录不一定是程序集目录的子目录。

注意

此元素在 Windows Server 2008 R2 和 Windows 7 之前的系统上不可用,只能在 Windows 元素中使用。

此元素具有下表所示的属性。

属性 说明
privatePath 指定可能包含程序集的应用程序基目录的子目录的 相对路径 。 最多可以指定 9 个子目录路径。 用分号分隔每个子目录路径。

可以在路径中使用双点特殊说明符来表示当前目录的父目录。 使用双点可以指定当前目录上方的两个以上级别。 请勿使用三点。 例如,使用以下 探测 元素的应用程序会检查程序集的其他目录。

<probing privatePath="bin;..\bin2\subbin;bin3"/>

dependency

至少一个 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 描述应用程序所依赖的并行程序集。 应用程序配置文件重新配置此所需程序集的标识。 例如,以下 assemblyIdentitybindingRedirect 将 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 中。 新版本和旧版本的四部分版本语法必须指定相同的主版本和次要版本。

此元素具有下表所示的属性。

属性 说明
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"/>