如何:启用和禁用自动绑定重定向

注释

本文特定于 .NET Framework。 它不适用于 .NET 的较新版本实现,包括 .NET 6 及更高版本。

在 Visual Studio 中编译面向 .NET Framework 4.5.1 及更高版本的桌面应用程序时,绑定重定向可能会被自动添加到应用配置文件中,以覆盖程序集统一。 如果应用或其组件引用同一程序集的多个版本,则添加绑定重定向,即使你在应用的配置文件中手动指定绑定重定向也是如此。 自动绑定重定向功能会影响面向 .NET Framework 4.5.1 或更高版本的桌面应用。 如果尚未显式启用或禁用自动生成的绑定重定向并升级现有项目,则会自动启用该功能。

对于 Web 应用,当 Visual Studio 遇到绑定冲突时,它会 提示你添加绑定重定向 以解决冲突。

可以为针对旧版本 .NET Framework(4.5及更早版本)的现有应用程序启用自动绑定重定向。 如果要手动编写绑定重定向,可以 禁用 此功能。

重要

从 Visual Studio 2022 开始,Visual Studio 不再包含适用于 .NET Framework 4.0 - 4.5.1 的 .NET Framework 组件,因为这些版本不再受支持。 Visual Studio 2022 及更高版本无法生成面向 .NET Framework 4.0 到 .NET Framework 4.5.1 的应用。 若要继续生成这些应用,可以使用 Visual Studio 2019 或更早版本。

在桌面应用中禁用自动绑定重定向

默认情况下,针对面向 .NET Framework 4.5.1 及更高版本的 Windows 桌面应用启用自动绑定重定向。 编译应用时,绑定重定向将添加到输出配置(app.config)文件中。 重定向将替代可能发生的程序集统一。 源 app.config 文件未修改。 可以通过修改应用的项目文件或取消选中 Visual Studio 中项目属性中的复选框来禁用此功能。

通过项目属性禁用

如果你有 Visual Studio 2017 版本 15.7 或更高版本,则可以在项目的属性页中禁用自动生成的绑定重定向。

  1. 右键单击“解决方案资源管理器”中的项目,再选择“属性” 。

  2. “应用程序 ”页上,取消选中 “自动生成绑定重定向 ”选项。

    如果未看到该选项,则需要在项目文件中 手动禁用 该功能。

  3. Ctrl+S 保存更改。

在项目文件中手动禁用

  1. 使用以下方法之一打开项目文件进行编辑:

    • 在 Visual Studio 中,在 解决方案资源管理器中选择项目,然后从快捷菜单中选择 “在文件资源管理器中打开文件夹 ”。 在文件资源管理器中,找到项目(.csproj 或 .vbproj)文件,并在记事本中打开它。
    • 在 Visual Studio 的解决方案资源管理器中,右键单击项目并选择 “卸载项目”。 再次右键单击卸载的项目,然后选择 “编辑 [projectname.csproj]”。
  2. 在项目文件中,找到以下属性条目:

    <AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
    
  3. true 更改为 false

    <AutoGenerateBindingRedirects>false</AutoGenerateBindingRedirects>
    

手动启用自动绑定重定向

可以在面向旧版 .NET Framework 的现有应用中启用自动绑定重定向,或者在未自动提示添加重定向的情况下启用自动绑定重定向。 如果要面向较新版本的 .NET Framework,但没有收到自动提示以添加重定向,生成输出可能会建议您重新映射程序集。

  1. 使用以下方法之一打开项目文件进行编辑:

    • 在 Visual Studio 中,在 解决方案资源管理器中选择项目,然后从快捷菜单中选择 “在文件资源管理器中打开文件夹 ”。 在文件资源管理器中,找到项目(.csproj 或 .vbproj)文件,并在记事本中打开它。
    • 在 Visual Studio 的解决方案资源管理器中,右键单击项目并选择 “卸载项目”。 再次右键单击卸载的项目,然后选择 “编辑 [projectname.csproj]”。
  2. 将以下元素添加到第一个配置属性组(标记 <PropertyGroup> 下):

    <AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
    

    下面显示了插入了元素的示例项目文件:

    <?xml version="1.0" encoding="utf-8"?>
    <Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
      <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
      <PropertyGroup>
        <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
        <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
        <ProjectGuid>{123334}</ProjectGuid>
        ...
        <AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
      </PropertyGroup>
      ...
    </Project>
    
  3. 编译你的应用程序。

在 Web 应用中启用自动绑定重定向

自动绑定重定向在 Web 应用程序中以不同方式实现。 由于必须为 Web 应用修改源配置(web.config)文件,因此不会自动将绑定重定向添加到配置文件。 但是,Visual Studio 会通知你绑定冲突,并且你可以配置绑定重定向来解决这些冲突。 由于始终提示添加绑定重定向,因此无需为 Web 应用显式禁用此功能。

若要将绑定重定向添加到 web.config 文件,请执行以下作:

  1. 在 Visual Studio 中,编译应用并检查生成警告。

    程序集引用冲突的生成警告。

  2. 如果存在程序集绑定冲突,将显示警告。 双击警告,或选择警告,然后按 Enter

    此时会显示一个对话框,用于自动将必要的绑定重定向添加到源 web.config 文件。

    绑定重定向权限对话框。

另请参阅