指定应用程序可以在 .NET Framework 的两个不同的实现中引用同一程序集,方法是禁用将程序集视为等效于应用程序可移植性的默认行为。
<配置>
<运行时>
<assemblyBinding>
<supportPortability>
Syntax
<supportPortability PKT="public_key_token" enabled="true|false"/>
特性和元素
下列各节描述了特性、子元素和父元素。
特性
| Attribute | Description |
|---|---|
| PKT | 必需属性。 将受影响程序集的公钥令牌指定为字符串。 |
| enabled | 可选属性。 指定是否应启用对指定 .NET Framework 程序集实现之间的可移植性支持。 |
enabled Attribute
| 价值 | Description |
|---|---|
| 是 | 启用对指定 .NET Framework 程序集实现之间的可移植性的支持。 这是默认情况。 |
| 假 | 禁用对指定 .NET Framework 程序集实现之间的可移植性的支持。 这使应用程序能够引用指定程序集的多个实现。 |
子元素
没有。
父元素
| 元素 | Description |
|---|---|
configuration |
公共语言运行时和 .NET Framework 应用程序所使用的每个配置文件中的根元素。 |
runtime |
包含有关程序集绑定和垃圾回收的信息。 |
assemblyBinding |
包含有关程序集版本重定向和程序集位置的信息。 |
注解
从 .NET Framework 4 开始,会自动为可以使用 .NET Framework 的两个实现之一的应用程序提供支持,例如 .NET Framework 实现或用于 Silverlight 实现的 .NET Framework。 特定 .NET Framework 程序集的两个实现被程序集绑定器视为等效的实现。 在某些情况下,此应用程序可移植性功能会导致问题。 在这些方案中, <supportPortability> 该元素可用于禁用该功能。
其中一种方案是一个程序集,该程序集必须同时引用特定引用程序集的 .NET Framework 实现和用于 Silverlight 的 .NET Framework 实现。 例如,用 Windows Presentation Foundation (WPF) 编写的 XAML 设计器可能需要同时引用 WPF 桌面实现、设计器的用户界面以及 Silverlight 实现中包含的 WPF 子集。 默认情况下,单独引用会导致编译器错误,因为程序集绑定将这两个程序集视为等效。 此元素禁用默认行为,并允许编译成功。
重要
为了使编译器将信息传递给公共语言运行时的程序集绑定逻辑,必须使用 /appconfig 编译器选项来指定包含此元素的 app.config 文件的位置。
Example
以下示例使应用程序能够同时引用 .NET Framework 实现和 .NET Framework for Silverlight 实现这两个实现中存在的任何 .NET Framework 程序集。 编译器 /appconfig 选项必须用于指定此 app.config 文件的位置。
<configuration>
<runtime>
<assemblyBinding>
<supportPortability PKT="7cec85d7bea7798e" enable="false"/>
<supportPortability PKT="31bf3856ad364e35" enable="false"/>
</assemblyBinding>
</runtime>
</configuration>