发布服务器配置文件
发布者配置文件是一个 XML 文件,用于将应用程序和程序集从使用一个并行程序集版本全局重定向到同一程序集的另一个版本。 通常,程序集的发布者通过发出要随 Service Pack 更新一起安装的发布服务器配置文件,在每个程序集的基础上发布兼容的更新或安全更新。 这称为 发布服务器配置。 有关此类型 配置 的详细信息,请参阅发布服务器配置。
发布服务器配置文件具有以下元素和属性。 有关 XML 架构的完整列表,请参阅 发布服务器配置文件架构。
元素 | 属性 | 必须 |
---|---|---|
assembly | 是 | |
manifestVersion | 是 | |
assemblyIdentity | 是 | |
type | 是 | |
name | 是 | |
language | 否 | |
processorArchitecture | 否 | |
version | 是 | |
publicKeyToken | 否 | |
依赖 | 否 | |
dependentAssembly | 否 | |
bindingRedirect | 是 | |
oldVersion | 是 | |
newVersion | 是 |
文件位置
发布者配置文件必须安装在 WinSxS 文件夹中。 它们通常作为单独的文件安装,但发布者配置文件也可以作为资源包含在 DLL 中。 发布者配置文件不能作为资源包含在 EXE 文件中。 EXE 文件可能包含 应用程序清单 作为资源。
文件名语法
发布服务器配置文件的文件名具有窗体 策略。major。minor。assemblyname ,其中 主要 和 次要 是指受影响的 程序集版本 的主要和次要部分。 程序集名称引用程序集的名称。
例如,Microsoft.Windows.Common-Controls 程序集版本 6.0 的发布者配置文件的名称如下:
- 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 中。 程序集的子元素也必须通过继承或标记位于此命名空间中。
程序集元素具有以下属性。
Attribute 说明 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 元素具有以下属性。 它没有子元素。
Attribute 说明 type 指定程序集类型。 必需。 在受影响的程序集的 assemblyIdentity 中, type 属性的值必须设置为 win32-policy。 值 win32-policy 必须全部采用小写字母。
在更改程序集依赖项的 assemblyIdentity 中, type 属性的值必须设置为 win32。 值 win32 必须全部采用小写字母。name 唯一命名程序集。 必需。 在受影响的程序集的 assemblyIdentity 中,name 具有窗体 策略。major。minor。assemblyname ,其中 major 和 minor 是指 程序集版本的主要部分和次要部分。
在更改的程序集依赖项的 assemblyIdentity 中,名称的格式 Organization.Division.Name。 例如,Microsoft.Windows.MysampleApp。language 标识程序集的语言。 可选。 在受影响的程序集的 assemblyIdentity 中,如果程序集特定于语言,则指定 DHTML 语言代码。 如果程序集用于全球使用 (语言中性) ,请省略此属性。
在更改程序集依赖项的 assemblyIdentity 中,如果程序集特定于语言,则指定 DHTML 语言代码。 如果程序集用于全球使用 (语言中性) 将值设置为“*”。processorArchitecture 指定运行应用程序的处理器。 version 指定程序集版本。 使用由四部分构成的版本语法:mmmm.nnnn.oooo.pppp 仅在 DEF-context assemblyIdentity 中是必需的。 不要在 REF-context assemblyIdentity 中指定 version 属性。 publicKeyToken 一个 16 个字符的十六进制字符串,表示对程序集进行签名的公钥的 SHA-1 哈希的最后 8 个字节。 用于对目录进行签名的公钥必须为 2048 位或更大。 所有共享的并行程序集都需要 publicKeyToken。 用于发布者配置文件的 publicKeyToken 应与用于已签名程序集的密钥相同。 可以使用与程序集一起使用的相同工具对发布者配置文件进行签名,请参阅 程序集签名示例 和 创建签名文件和目录。 -
依赖
-
至少一个 dependentAssembly 的可选容器元素。 它没有属性。
-
dependentAssembly
-
每个 dependentAssembly 必须恰好位于一个 依赖项内。 dependentAssembly 没有属性。 dependentAssembly 的第一个子元素必须是由发布服务器配置重新配置的并行程序集的 assemblyIdentity。
-
bindingRedirect
-
bindingRedirect 元素包含程序集绑定的重定向信息。
此元素具有下表所示的属性。
Attribute 说明 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>