Я обнаружил, что мое консольное приложение (. NET Core 2.2) взрывалось, потому что казалось, что существует какой-то конфликт между зависимостями для JSON. NET (Newtonsoft).
Это было исключение:
System.IO.FileLoadException: не удалось загрузить файл или сборку 'Newtonsoft. Json, версия = 12.0.0.0, культура = нейтральная, PublicKeyToken = 30ad4fe6b2a6aeed'. Определение манифеста обнаруженной сборки не соответствует ссылке на сборку. (Исключение из HRESULT: 0x80131040)
После дальнейшего расследования я обнаружил причину исключения, которое я изложу ниже.
У меня есть ссылка на местный Проект, который зависит от JSON. NET. Давайте назовем это SomeDomain
. Это зависит от версии 12.0.2 JSON. NET.
Я также установил (посредством Nuget) пакет Microsoft.Extensions.Configuration.Json
(v2.2.0), который также использует JSON. NET. Если вы go перейдете на страницу Nuget.org для этой версии этого пакета, вы увидите, что зависимость от версии составляет> = 11.0.2
Я думаю, что это "мило".
Не так.
Когда я публикую sh, он разрешает v11.0.2 из JSON. NET. И это приводит к исключению, поскольку SomeDomain
зависит от v12.0.2.
В попытке решить эту проблему я добавил v12.0.2 из JSON. NET непосредственно в приложение. Я подумал, что это заставит его использовать эту версию. Не так. Он по-прежнему разрешает v11.0.2 из JSON. NET после публикации sh.
Кто-нибудь знает, как я могу заставить его разрешить v12.0.2 из JSON. NET при публикации? sh мое приложение?