Visual Studio перезаписывает правильную версию NewtonSoft.Json.DLL, которую я сконфигурировал как в моих проектных ссылках, так и в файле пакета NuGet со старой версией, когда я создаю любой другой проект, кроме веб-сайта, содержащего ссылку.
OK. Вот сценарий:
У меня есть решение с бэкэнд-сервисом и веб-сайтом. Веб-сайт работает на .NET 4.5 и настроен с помощью NuGet, чтобы вытащить версию 6.0.1 Newtonsoft.Json.DLL.
<package id="Newtonsoft.Json" version="6.0.1" targetFramework="net45" />
Что добавляет привязку dependenAssembly к файлу web.config.
<dependentAssembly>
<assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0" />
</dependentAssembly>
Я могу создавать и запускать этот сайт без каких-либо проблем.
Недавно я обновил все библиотеки классов и вспомогательные службы с .NET 4.0 до .NET 4.5. После обновления всякий раз, когда я создаю одну из библиотек классов или запускаю/отлаживаю серверную службу, веб-сайт становится неработоспособным.
Could not load file or assembly 'Newtonsoft.Json' or one of its dependencies. The located assembly manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)
Я проследил это за тем, что при перестройке одной из библиотек классов или запуске/отладке бэкэнд-сервиса из Visual Studio, Newtonsoft.Json.DLL перезаписывается более старой версией файла - версия 4.5.11. Из-за явной привязки dependAssembly, когда я получаю доступ к веб-сайту после этого, я получаю ошибку "Не могу загрузить...", упомянутую выше.
Это было бы нормально, если бы я просто хотел запустить тот или иной серверный сервис или веб-сайт, но я должен запустить их оба вместе, чтобы обеспечить правильное выполнение моего приложения. Но из-за этой ошибки я не могу запустить бэкэнд-службу одновременно с сбоем веб-сайта или веб-сайта.
Как я могу запретить Visual Studio переписывать DLL?
Обратите внимание, что у меня есть набор ссылок только для 6.0.1 для всего решения (т.е. нет ссылки нигде на 4.5.11). И на веб-сайте у меня есть "Скопировать локальный", установленный в true, и "Специфическая версия" также установлена в значение true для Newtonsoft.Json.DLL.