Автоматические переадресации пересылки

Запуск VS 2017, последнее обновление.

В документации говорится, что для включения автоматического перенаправления привязки вы изменяете файл csproj и добавляете следующее в соответствующую <PropertyGroup>:

<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>

Исторически в моем проекте было несколько обязательных записей перенаправления в app.config. Недавно я обновил все пакеты nuget для решений и в коммите изменил несколько записей перенаправления привязки, чтобы они соответствовали новой версии.

Я хотел убедиться, что все было хорошо для QA, поэтому я удалил все записи в App.Config, думая, что они будут восстановлены при следующей сборке (как и предполагают документы).

К моему удивлению, ничего не было добавлено в app.config на чистой/сборке.

Поэтому мой вопрос: можно ли предположить, что, консолидируя зависимости в решениях, они мне больше не нужны?

Или что-то не так, и VS должен генерировать перенаправления и его сбой.

Ответы

Ответ 1

Проверьте эту статью:

https://weblog.west-wind.com/posts/2014/Nov/29/Updating-Assembly-Redirects-with-NuGet

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

Просто попробуйте это на консоли диспетчера пакетов:

PM> Get-Project –All | Add-BindingRedirect

Ответ 2

Это связано с тем, что исходный файл app.config не изменяется, но только выход (тот, который был создан на этапе компиляции и помещен в папку конфигурации приложения Debug/Release).

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

Источник

Перенаправления в исходном файле app.config были созданы самим Nuget. Вы активировали его, внося изменения в пакеты.

Ответ 3

Там предупреждение, которое автоматически сгенерирует ваши пропущенные перенаправления.

  1. Очисти свой проект
  2. Создай свой проект
  3. Перейти к фильтру списка ошибок и активировать фильтр предупреждений
  4. Фильтр предупреждений для вашего основного проекта
  5. Посмотрите на предупреждение с таким сообщением:

    Обнаружены конфликты между разными версиями одной и той же зависимой сборки. В Visual Studio дважды щелкните это предупреждение (или выберите его и нажмите Enter), чтобы устранить конфликты; в противном случае добавьте следующие перенаправления привязки к узлу "runtime" в файле конфигурации приложения

  6. Следуйте за сообщением. Нажмите это!

Обновление: вам нужно будет активировать предупреждение в свойствах проекта → Приложение → Автогенерация перенаправлений привязки