在并行执行中,应用程序有可能由使用不同版本的 .NET Framework 创建的组件组成。这可能会在组件的依存关系方面引起冲突。例如,假设组件 A 是使用 .NET Framework 1.0 版创建的,并且需要使用 1.0 版的 System.Data 程序集。组件 B 是使用 .NET Framework 1.1 版创建的,并且需要使用 1.1 版的 System.Data 程序集。如果程序集的版本不兼容,但却在同一时间加载,将会导致出现预料不到的强制类型转换异常或更严重的问题。
要解决这个问题,当应用程序使用在不同 .NET Framework 版本上创建的组件时,与应用程序相关的运行时版本将决定应用程序及其所有组件使用的 .NET Framework 程序集版本。在上一个示例中,如果与应用程序关联的是 1.1 版本的 .NET Framework,则会载入 1.1 版本的 System.Data 程序集,而且应用程序使用的所有组件都将共享该程序集。组件 A 对于 1.0 版本的 System.Data 程序集的引用会在运行时升级为 1.1 版本。
可以通过向 Machine.config 或 Web.config 文件中添加 <bindingRedirect> 元素来覆盖该行为。这样便允许应用程序使用更新的程序集版本,而该版本又可以为某些类型的应用程序替换现有程序集。例如:假设将来发行支持 SOAP 1.2 版的更新版的 System.Web.Service.dll,您可能想让您的应用程序使用该版本,而不是原先与运行时一起安装的版本。
注意 有关详细信息,请参阅 .NET Framework 帮助中的 <bindingRedirect> 主题。
在 ASP.NET 主机配置文件 (Aspnet.config) 中也可以覆盖该行为。无论 Web.config 文件中有无任何覆盖,ASP.NET 都会使用此文件来确保 System.Web.dll 和 System.Web.RegularExpressions.dll 的版本总是与应用程序运行时版本相匹配。
有时候,您可能希望在使用早期版本构建的应用程序中使用由更新版本的 ASP.NET 创建的组件。请记住,应用程序使用的运行时版本总是由与应用程序相关的 ASPNET ISAPI 的版本决定的。如果应用程序被配置为使用早期版本的运行时,那么组件也会重定向为使用该版本的运行时。当您在由早期版本构建的应用程序中使用通过更新版本的 .NET Framework 创建的组件时,请考虑下列事项:
或者,如果计算机中安装了创建组件时使用的运行时,那么您也可以重新配置应用程序,使其使用较新的运行时版本。因为较新版本的 .NET Framework 向后兼容,所以无需任何修改,应用程序便可以正常工作。有关配置 ASP.NET 应用程序以使用特定运行时版本的详细信息,请参阅为 ASP.NET 版本配置 ASP.NET 应用程序。
© 1997-2003 Microsoft Corporation。保留所有权利。