注释
本文特定于 .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 或更高版本,则可以在项目的属性页中禁用自动生成的绑定重定向。
右键单击“解决方案资源管理器”中的项目,再选择“属性” 。
在 “应用程序 ”页上,取消选中 “自动生成绑定重定向 ”选项。
如果未看到该选项,则需要在项目文件中 手动禁用 该功能。
按 Ctrl+S 保存更改。
在项目文件中手动禁用
使用以下方法之一打开项目文件进行编辑:
- 在 Visual Studio 中,在 解决方案资源管理器中选择项目,然后从快捷菜单中选择 “在文件资源管理器中打开文件夹 ”。 在文件资源管理器中,找到项目(.csproj 或 .vbproj)文件,并在记事本中打开它。
- 在 Visual Studio 的解决方案资源管理器中,右键单击项目并选择 “卸载项目”。 再次右键单击卸载的项目,然后选择 “编辑 [projectname.csproj]”。
在项目文件中,找到以下属性条目:
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>将
true更改为false:<AutoGenerateBindingRedirects>false</AutoGenerateBindingRedirects>
手动启用自动绑定重定向
可以在面向旧版 .NET Framework 的现有应用中启用自动绑定重定向,或者在未自动提示添加重定向的情况下启用自动绑定重定向。 如果要面向较新版本的 .NET Framework,但没有收到自动提示以添加重定向,生成输出可能会建议您重新映射程序集。
使用以下方法之一打开项目文件进行编辑:
- 在 Visual Studio 中,在 解决方案资源管理器中选择项目,然后从快捷菜单中选择 “在文件资源管理器中打开文件夹 ”。 在文件资源管理器中,找到项目(.csproj 或 .vbproj)文件,并在记事本中打开它。
- 在 Visual Studio 的解决方案资源管理器中,右键单击项目并选择 “卸载项目”。 再次右键单击卸载的项目,然后选择 “编辑 [projectname.csproj]”。
将以下元素添加到第一个配置属性组(标记
<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>编译你的应用程序。
在 Web 应用中启用自动绑定重定向
自动绑定重定向在 Web 应用程序中以不同方式实现。 由于必须为 Web 应用修改源配置(web.config)文件,因此不会自动将绑定重定向添加到配置文件。 但是,Visual Studio 会通知你绑定冲突,并且你可以配置绑定重定向来解决这些冲突。 由于始终提示添加绑定重定向,因此无需为 Web 应用显式禁用此功能。
若要将绑定重定向添加到 web.config 文件,请执行以下作:
在 Visual Studio 中,编译应用并检查生成警告。
如果存在程序集绑定冲突,将显示警告。 双击警告,或选择警告,然后按 Enter。
此时会显示一个对话框,用于自动将必要的绑定重定向添加到源 web.config 文件。