Практическое руководство. Включение и отключение автоматического перенаправления привязок

При компиляции классических приложений в Visual Studio, предназначенных для платформа .NET Framework версии 4.5.1 и более поздних версий, перенаправления привязок могут быть автоматически добавлены в файл конфигурации приложения для переопределения объединения сборок. Переадресации привязок добавляются, если приложение или его компоненты ссылаются на несколько версий одной сборки, даже если вручную указать переадресации привязок в файле конфигурации приложения. Функция автоматического перенаправления привязок влияет на классические приложения, предназначенные для платформа .NET Framework 4.5.1 или более поздней версии. Если вы явно не включили или отключили перенаправление автоматически созданной привязки и обновляете существующий проект, функция автоматически включена.

Для веб-приложений, когда Visual Studio сталкивается с конфликтом привязки, он предложит добавить перенаправление привязки для разрешения конфликта.

Вы можете включить автоматическое перенаправление привязки для существующих приложений, предназначенных для предыдущих версий платформа .NET Framework (4.5 и более ранних версий). Эту функцию можно отключить , если вы хотите вручную создавать перенаправления привязок.

Внимание

Начиная с версии 2022, Visual Studio больше не включает компоненты для .NET Framework 4.0–4.5.1, так как эти версии больше не поддерживаются. Visual Studio 2022 и более поздние версии не могут выполнять сборку приложений, предназначенных для платформ .NET Framework 4.0–4.5.1. Чтобы сохранить возможность сборки таких приложений, используйте Visual Studio 2019 и более ранние версии.

Отключение автоматических перенаправлений привязок в классических приложениях

Автоматические перенаправления привязки включены по умолчанию для классических приложений Windows, предназначенных для платформа .NET Framework 4.5.1 и более поздних версий. Перенаправления привязки добавляются в выходной файл конфигурации (app.config) при компиляции приложения. Перенаправления переопределяют объединение сборки, которое может произойти в противном случае. Исходный файл app.config не изменяется. Эту функцию можно отключить, изменив файл проекта для приложения или отменив выбор проверка box в свойствах проекта в Visual Studio.

Отключение с помощью свойств проекта

Если у вас есть Visual Studio 2017 версии 15.7 или более поздней, вы можете отключить перенаправления автоматически созданных привязок на страницах свойств проекта.

  1. В обозревателе решений щелкните проект правой кнопкой мыши и выберите пункт Свойства.

  2. На странице приложения не проверка параметр автоматического перенаправления привязок.

    Если этот параметр не отображается , необходимо вручную отключить функцию в файле проекта.

  3. Нажмите клавиши CTRL+S, чтобы сохранить изменение.

Отключение вручную в файле проекта

  1. Откройте файл проекта для редактирования с помощью одного из следующих методов:

    • В Visual Studio выберите проект в Обозреватель решений, а затем в контекстном меню выберите команду "Открыть папку" в проводник. В проводник найдите файл проекта (CSPROJ или VBPROJ) и откройте его в Блокнот.
    • В Visual Studio в Обозреватель решений щелкните проект правой кнопкой мыши и выберите "Выгрузить проект". Снова щелкните выгруженный проект правой кнопкой мыши и выберите команду "Изменить [имя_проекта.csproj].
  2. Найдите в файле проекта следующую запись свойства:

    <AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
    
  3. Задайте для параметра true значение false:

    <AutoGenerateBindingRedirects>false</AutoGenerateBindingRedirects>
    

Включение автоматических перенаправлений привязок вручную

Вы можете включить автоматические перенаправления привязок в существующих приложениях, предназначенных для более старых версий платформа .NET Framework, или в случаях, когда вам не будет автоматически предложено добавить перенаправление. Если вы используете более новую версию платформа .NET Framework, но не получаете автоматический запрос на добавление перенаправления, вы, скорее всего, получите выходные данные сборки, которые показывают, что вы перенаправляете сборки.

  1. Откройте файл проекта для редактирования с помощью одного из следующих методов:

    • В Visual Studio выберите проект в Обозреватель решений, а затем в контекстном меню выберите команду "Открыть папку" в проводник. В проводник найдите файл проекта (CSPROJ или VBPROJ) и откройте его в Блокнот.
    • В Visual Studio в Обозреватель решений щелкните проект правой кнопкой мыши и выберите "Выгрузить проект". Снова щелкните выгруженный проект правой кнопкой мыши и выберите команду "Изменить [имя_проекта.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.config) должен быть изменен для веб-приложений, перенаправления привязок не добавляются в файл конфигурации автоматически. Однако Visual Studio уведомляет вас о конфликтах привязки, и вы можете добавлять переадресации привязок для разрешения конфликтов. Так как вам всегда предлагается добавить перенаправления привязки, вам не нужно явно отключить эту функцию для веб-приложения.

Чтобы добавить перенаправления привязки в файл web.config, выполните приведенные ниже действия.

  1. В Visual Studio скомпилируйте приложение и проверьте его на наличие предупреждений сборки.

    Build warning for assembly reference conflicts.

  2. При наличии конфликтов привязки сборок выводится предупреждение. Дважды щелкните предупреждение или выберите предупреждение и нажмите клавишу ВВОД.

    Откроется диалоговое окно, позволяющее автоматически добавлять необходимые перенаправления привязки в исходный файл конфигурации web.config .

    Binding redirect permission dialog.

См. также