Publisher配置文件

发布者配置文件是一个 XML 文件,它全局将应用程序和程序集从使用并行程序集的一个版本重定向到同一程序集的另一个版本。 通常,程序集的发布者通过发出要随 Service Pack 更新一起安装的发布者配置文件,按程序集发布兼容的更新或安全更新。 这称为 发布服务器配置。 有关此类型的配置的详细信息,请参阅Publisher配置。

Publisher配置文件具有以下元素和属性。 有关 XML 架构的完整列表,请参阅Publisher配置文件架构

元素 属性 必须
装配
manifestVersion
assemblyIdentity
type
name
language
processorArchitecture
version
publicKeyToken
依赖
dependentAssembly
bindingRedirect
oldVersion
newVersion

文件位置

Publisher配置文件必须安装在 WinSxS 文件夹中。 它们通常作为单独的文件安装,但发布者配置文件也可以作为资源包含在 DLL 中。 发布者配置文件不能作为资源包含在 EXE 文件中。 EXE 文件可能包括 应用程序清单 作为资源。

文件名语法

发布者配置文件的文件名具有表单 策略major.minor。程序集名称 ,其中 主要次要 部分是指受影响的 程序集版本 的主要和次要部分。 程序集名称引用程序集的名称。

例如,Microsoft 版本 6.0 的发布者配置文件。Windows。Common-Controls 程序集的名称如下:

policy.6.0.Microsoft.Windows。Common-Controls

不要使用策略配置文件来递增程序集的主版本或次要版本。 例如,不要将版本 6.0.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 元素具有以下属性。 它没有子元素。

属性 说明
type 指定程序集类型。 必需。 在受影响的程序集的 assemblyIdentity 中, 类型 特性的值必须设置为 win32 策略。 值 win32 策略必须采用所有小写字母。
在更改程序集依赖项的 assemblyIdentity 中, 类型 属性的值必须设置为 win32。 win32 的值必须采用所有小写字母。
name 唯一命名程序集。 必需。 在受影响的程序集的 assemblyIdentity 中,名称具有表单 策略major.minor。程序集名称 ,其中 主要次要 部分引用 程序集版本的主要和次要部分。
在更改程序集依赖项的 assemblyIdentity 中,名称具有窗体 Organization.Division.Name。 例如,Microsoft。Windows。MysampleApp。
language 标识程序集的语言。 可选。 在受影响的程序集的 assemblyIdentity 中,如果程序集特定于语言,请指定 DHTML 语言代码。 如果程序集用于全球使用 (语言中性) ,请省略此属性。
在更改的程序集依赖项的 assemblyIdentity 中,如果程序集特定于语言,请指定 DHTML 语言代码。 如果程序集用于全球使用 (语言中性) 将值设置为“*”。
processorArchitecture 指定运行应用程序的处理器。
version 指定程序集版本。 使用四部分版本语法:mmmm.nnnn.oooo.pppp 仅在 DEF-context assemblyIdentity 中必需。 请勿在 REF 上下文 assemblyIdentity 中指定版本属性。
publicKeyToken 一个 16 个字符的十六进制字符串,表示对程序集进行签名的公钥的 SHA-1 哈希的最后 8 个字节。 用于对目录进行签名的公钥必须为 2048 位或更高版本。 所有共享程序集都需要 publicKeyToken。 用于发布服务器配置文件的 publicKeyToken 应是用于已签名程序集的相同密钥。 Publisher配置文件可以使用与程序集一起使用的相同工具进行签名,请参阅程序集签名示例创建签名文件和目录

依赖

至少一个 dependentAssembly 的可选容器元素。 它没有属性。

dependentAssembly

每个 dependencAssembly 必须正好位于一个 依赖项内。 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。

注解

Publisher配置文件不指定文件。 请注意,特定于语言的策略文件与发布者配置文件分开。

示例

<?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>