Как я могу решить этот конфликт версий NewtonSoft? - PullRequest
0 голосов
/ 22 мая 2018

Я работаю над функцией Azure.Я использую Microsoft.Azure.Devices.Shared, который требует NewtonSoft v11, поэтому я реализовал некоторые ручные перенаправления привязки с доменом приложения, который, кажется, работает (см. Ниже).Но почему-то существует жесткая ссылка на домен приложения WebJob, с которым конфликтует NewtonSoft, если я правильно читаю приведенный ниже журнал:

2018-05-21T22: 03: 03.824 [Info] Исключение: [A] Newtonsoft.Json.Linq.JObject не может быть приведен к [B] Newtonsoft.Json.Linq.JObject.Тип A происходит от 'Newtonsoft.Json, Версия = 9.0.0.0, Культура = Нейтральный, PublicKeyToken = 30ad4fe6b2a6aeed' в контексте 'По умолчанию' в расположении 'D: \ Program Files (x86) \ SiteExtensions \ Functions \ 1.0.11702 \ bin\ Newtonsoft.Json.dll.Тип B происходит от 'Newtonsoft.Json, Version = 11.0.0.0, Culture = нейтральный, PublicKeyToken = 30ad4fe6b2a6aeed' в контексте 'LoadNeither' в байтовом массиве.

Моя библиотека Newtonsoft v11 находится вДиректория bin функции и там указывается так:

#r "bin\Newtonsoft.Json.dll"

В функции есть действительный код, который корректно работает в функции:

dynamic eventHubMessage =
JsonConvert.DeserializeObject<JObject>(myEventHubMessage);

Но когда он попадает в эту строку:

CRSLTwinData twinData = IotHubProxy.GetTwinData(hubDeviceId);

Выдает исключение.Здесь есть ссылка на MADShared и Newtonsoft 11.

Я перепробовал все, что мог, чтобы заставить функцию использовать версию 11 библиотеки DLL, но что-то явно не в порядке.

ОБНОВЛЕНИЕ: мы попытались перенаправить на 9 вместо этого и получили это:

2018-05-22T13: 24: 48.336 [Info] Исключение: [A] Newtonsoft.Json.Linq.JObject не может быть приведен к [B] Newtonsoft.Json.Linq.JObject.Тип A происходит от 'Newtonsoft.Json, Версия = 9.0.0.0, Культура = Нейтральный, PublicKeyToken = 30ad4fe6b2a6aeed' в контексте 'По умолчанию' в расположении 'D: \ Program Files (x86) \ SiteExtensions \ Functions \ 1.0.11702 \ bin\ Newtonsoft.Json.dll.Тип B происходит от 'Newtonsoft.Json, версия = 10.0.0.0, культура = нейтральная, PublicKeyToken = 30ad4fe6b2a6aeed' в контексте 'LoadFrom' в расположении 'D: \ local \ Temporary ASP.NET Files \ root \ e801054b \ 3f30c00f \ assembly\ dl3 \ e5381214 \ 00f64e9a_9af1d301 \ Newtonsoft.Json.dll '.

Затем мы попытались перенаправить на 10 и получили:):

2018-05-22T14:16: 14.509 [Info] Исключение: [A] Newtonsoft.Json.Linq.JObject не может быть приведен к [B] Newtonsoft.Json.Linq.JObject.Тип A происходит от 'Newtonsoft.Json, Версия = 9.0.0.0, Культура = Нейтральный, PublicKeyToken = 30ad4fe6b2a6aeed' в контексте 'По умолчанию' в расположении 'D: \ Program Files (x86) \ SiteExtensions \ Functions \ 1.0.11702 \ bin\ Newtonsoft.Json.dll.Тип B происходит от 'Newtonsoft.Json, версия = 10.0.0.0, культура = нейтральная, PublicKeyToken = 30ad4fe6b2a6aeed' в контексте 'LoadFrom' в расположении 'D: \ local \ Temporary ASP.NET Files \ root \ e801054b \ 3f30c00f \ assembly\ dl3 \ e5381214 \ 00f64e9a_9af1d301 \ Newtonsoft.Json.dll '.

Ответы [ 2 ]

0 голосов
/ 29 июня 2018

Используйте Microsoft.NET.Sdk.Functions версии 1.0.13, которая использует Newtonsoft.Json 10.0.3

0 голосов
/ 26 мая 2018

Я предполагаю, что вы используете функцию Azure 1.0, которая знает проблема разрешения сборки .

Так как webjob использует строгий номер версии Newtonsoft json, то, что я сделал в своем проекте, это понизил все мои до встроенных в sdk

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...