Автоматические переадресации пересылки
Запуск 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
Там предупреждение, которое автоматически сгенерирует ваши пропущенные перенаправления.
- Очисти свой проект
- Создай свой проект
- Перейти к фильтру списка ошибок и активировать фильтр предупреждений
- Фильтр предупреждений для вашего основного проекта
- Посмотрите на предупреждение с таким сообщением:
Обнаружены конфликты между разными версиями одной и той же зависимой сборки. В Visual Studio дважды щелкните это предупреждение (или выберите его и нажмите Enter), чтобы устранить конфликты; в противном случае добавьте следующие перенаправления привязки к узлу "runtime" в файле конфигурации приложения
- Следуйте за сообщением. Нажмите это!
Обновление: вам нужно будет активировать предупреждение в свойствах проекта → Приложение → Автогенерация перенаправлений привязки