应用程序配置文件

应用程序配置文件是用于控制程序集绑定的 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 的应用程序配置文件将使用以下示例所示的文件名语法。 如果将配置文件安装为单独的文件,或者资源 ID 为 1,则可以省略 <资源 ID 的字段>。

example.exe。<资源 ID>.config

example.dll。<资源 ID>.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 描述应用程序所依赖的并行程序集。 应用程序配置文件重新配置此所需程序集的标识。 例如,以下 assemblyIdentitybindingRedirect 将 Microsoft依赖项从版本 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 元素具有以下属性。 它没有子元素。

属性 描述
类型 该值必须为 win32(小写)。 必填。
名称 名称属性标识受应用程序配置文件或重定向程序集影响的应用程序。 对名称使用以下格式: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"/>