发布服务器配置文件
发布者配置文件是一个 XML 文件,它全局将应用程序和程序集从使用一个并行程序集版本重定向到同一程序集的另一个版本。 通常,程序集的发布者通过颁发要随 Service Pack 更新一起安装的发布服务器配置文件,基于每个程序集颁发兼容的更新或安全更新。 这称为 发布服务器配置。 有关这种类型的 配置的详细信息, 请参阅发布服务器配置。
发布服务器配置文件具有以下元素和属性。 有关 XML 架构的完整列表,请参阅 发布服务器配置文件架构。
元素 | 属性 | 必填 |
---|---|---|
程序集 | 是的 | |
manifestVersion | 是的 | |
assemblyIdentity | 是的 | |
类型 | 是的 | |
名称 | 是的 | |
语言 | 不 | |
processorArchitecture | 不 | |
版本 | 是的 | |
publicKeyToken | 不 | |
依赖项 | 不 | |
dependentAssembly | 不 | |
bindingRedirect | 是的 | |
oldVersion | 是的 | |
newVersion | 是的 |
文件位置
发布服务器配置文件必须安装在 WinSxS 文件夹中。 它们通常作为单独的文件进行安装,但发布者配置文件也可以作为资源包含在 DLL 中。 发布者配置文件不能作为资源包含在 EXE 文件中。 EXE 文件可能包含作为资源 应用程序清单。
文件名语法
发布者配置文件的文件名具有 策略窗体。主要。次要。程序集名称,其中 主要 和 次要 是指受影响的 程序集 版本的主要和次要部分。 程序集名称 引用程序集的名称。
例如,Microsoft.Windows 版本 6.0 的发布者配置文件。Common-Controls 程序集的名称如下:
- policy.6.0.Microsoft.Windows.Common-Controls
不要使用策略配置文件递增程序集的主版本或次要版本。 例如,不要将版本 6.0.0.0 重定向到 7.0.0.0 或 6.1.0.0。 当应用程序引用程序集版本(如 6.0.0.0)时,并行检查是否存在具有指定主版本和次要版本的任何策略配置文件,例如 6.0。 然后,应用程序会重定向到程序集的另一个版本,例如 6.0.1.0。 如果发布者配置文件递增程序集的主版本或次要版本,则程序集的后续重定向可能需要发出多个策略配置文件。
元素
-
程序集
-
容器元素。 其第一个子元素必须是 assemblyIdentity。 必填。
程序集元素必须位于命名空间 urn:schemas-microsoft-com:asm.v1。 程序集的子元素还必须通过继承或标记在此命名空间中。
程序集 元素具有以下属性。
属性 描述 manifestVersion manifestVersion 属性必须设置为 1.0。 -
assemblyIdentity
-
描述并唯一标识并排程序集。
作为 程序集 元素的第一个子元素,assemblyIdentity 描述了其程序集依赖项发生更改的并行程序集。 发布者配置文件将重定向标识的程序集的依赖项。 例如,以下 assemblyIdentity 指示发布者配置文件会影响 x86 Microsoft.Windows.Pop 6.0.0.0 程序集的依赖项。
<assemblyIdentity type="win32-policy" publicKeyToken="0000000000000000" name="policy.6.0.Microsoft.Windows.Pop" version="2.1.0.0" processorArchitecture="x86"/>
作为 dependentAssembly 元素的第一个子元素,assemblyIdentity 描述并行程序集依赖项。 发布者配置文件重新配置此所需并行程序集的标识。 更改是在 bindingRedirect中指定的。 例如,以下 assemblyIdentity 将 Microsoft.Windows.SampleAssembly 版本 2.0.0.0 的任何依赖项更改为对 Microsoft.Windows.SampleAssembly 版本 2.0.1.0 的依赖项。
<dependency> <dependentAssembly> <assemblyIdentity type="win32" name="Microsoft.Windows.SampleAssembly" processorArchitecture="x86" publicKeyToken="0000000000000000"/> <bindingRedirect oldVersion="2.0.0.0" newVersion="2.0.1.0"/> </dependentAssembly> </dependency>
assemblyIdentity 元素具有以下属性。 它没有子元素。
属性 描述 类型 指定程序集类型。 必填。 在受影响的程序集的 assemblyIdentity 中,类型 属性的值必须设置为 win32 策略。 win32 策略的值必须全部采用小写字母。
在更改程序集依赖项的 assemblyIdentity 中,类型 属性的值必须设置为 win32。 win32 的值必须采用所有小写字母。名称 唯一命名程序集。 必填。 在受影响的程序集的 assemblyIdentity 中,名称具有窗体 策略。主要。次要。程序集名称,其中 主要 和 次要 是指 程序集版本的主要和次要部分。
在更改程序集依赖项的 assemblyIdentity 中,名称具有窗体 Organization.Division.Name。 例如,Microsoft.Windows.MysampleApp。语言 标识程序集的语言。 自选。 在 assemblyIdentity,如果程序集特定于语言,请指定 DHTML 语言代码。 如果程序集用于全球使用(语言中性),请省略此属性。
在 assemblyIdentity 中,如果程序集特定于语言,请指定 DHTML 语言代码。 如果程序集用于全球使用(语言中性),请将值设置为“*”。processorArchitecture 指定运行应用程序的处理器。 版本 指定程序集版本。 使用由四部分构成的版本语法:mmmm.nnnn.oooo.pppp 仅在 DEF 上下文 assemblyIdentity中是必需的。 请勿在 REF 上下文 assemblyIdentity中指定版本属性。 publicKeyToken 一个 16 个字符的十六进制字符串,表示对程序集进行签名的公钥的 SHA-1 哈希的最后 8 个字节。 用于对目录进行签名的公钥必须为 2048 位或更高版本。 所有共享的并行程序集都需要 publicKeyToken。 用于发布服务器配置文件的 publicKeyToken 应与用于已签名程序集的密钥相同。 发布服务器配置文件可以使用与程序集一起使用的相同工具进行签名,请参阅 程序集签名示例 和 创建签名文件和目录。 -
依赖项
-
至少一个 dependentAssembly的可选容器元素。 它没有属性。
-
dependentAssembly
-
每个 dependentAssembly 必须正好位于一个 依赖项内。 dependentAssembly 没有属性。 dependentAssembly 的第一个子元素必须是发布者配置重新配置的并行程序集 assemblyIdentity。
-
bindingRedirect
-
bindingRedirect 元素包含程序集绑定的重定向信息。
此元素具有下表中显示的属性。
属性 描述 oldVersion 指定要重写和重定向的程序集版本。 使用由四部分构成的版本语法 nnnnn.nnnnn.nnnnn.nnnnn。 按不带空格的短划线指定一系列版本。 例如,2.14.3.0 或 2.14.3.0 2.16.0.0。 必填。 newVersion 指定替换程序集版本。 使用四部分版本语法 nnnnn.nnnnn.nnnnn.nnnnn。
言论
发布服务器配置文件不指定文件。 请注意,特定于语言的策略文件与发布者配置文件分开。
例
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<assemblyIdentity type="win32-policy" publicKeyToken="0000000000000000" name="policy.6.0.Proseware.Research.SampleAssembly" version="1.0.1.0" language="en-us" processorArchitecture="x86"/>
<dependency>
<dependentAssembly>
<assemblyIdentity type="win32" publicKeyToken="0000000000000000" name="Proseware.Research.SampleAssembly" language="en-us" processorArchitecture="x86"/>
<bindingRedirect oldVersion="1.0.0.0" newVersion="1.0.1.0"/>
</dependentAssembly>
</dependency>
</assembly>