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 文件可能包含应用程序 清单 作为资源。

文件名语法

发布服务器配置文件的文件名具有 窗体策略主要次要assemblyname,其中主要和次要 引用受影响的程序集 版本的主要和次要部分。 assemblyname 是指程序集的名称。

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

policy.6.0.Microsoft。Windows。通用控件

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

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

依赖项

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

dependentAssembly

每个 dependentAssembly 必须正好位于一个 依赖项 内。 DependentAssembly 没有特性。 DependentAssembly 的第一个子元素必须是由发布服务器配置重新配置的并行程序集的 assemblyIdentity

bindingRedirect

BindingRedirect 元素包含程序集绑定的重定向信息。

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

属性 说明
oldVersion 指定正在重写和重定向的程序集版本。 使用由四个部分组成的版本语法 nnnnn. nnnnn。 指定一个版本范围,不含空格。 例如,2.14.3.0 或 2.14.3.0 2.16.0.0。 必需。
newVersion 指定替换程序集版本。 使用由四个部分组成的版本语法 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>