Как разрешить конфликты зависимостей в Azure WebJob SDK?

Я пробую пакет SDK Azure WebJob (v 0.3.1). Я все упаковал и загрузил, но в панели управления получаю ошибку:

«Необработанное исключение: System.IO.FileLoadException: не удалось загрузить файл или сборку «Newtonsoft.Json, версия = 4.5.0.0, культура = нейтральная, PublicKeyToken = 30ad4fe6b2a6aeed» или одну из ее зависимостей. Определение манифеста обнаруженной сборки не соответствует ссылка на сборку. (Исключение из HRESULT: 0x80131040)"

Насколько я понимаю, это означает, что в приложении упоминается более новая версия Newtonsoft.Json, чем в SDK WebJob. Однако я попытался добавить перенаправление привязки зависимостей к app.config, связанному с exe, но это не меняет ошибку. Я подозреваю, что конфиг вообще не используется. У меня есть следующая привязка напрямую как в job.blah.exe.config, так и в 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>

Newtonsoft.Json имеет версию 6.0.0.0 в обоих проектах.

Каков наилучший способ решить эту проблему?


person Daniel    schedule 03.07.2014    source источник
comment
Привет Даниил, я пытался воспроизвести проблему, о которой вы сообщаете, но не могу. Не могли бы вы сообщить мне, какая версия каждого пакета у вас есть в packages.config и какие перенаправления привязки у вас есть в app.config?   -  person Victor Hurdugaci    schedule 03.07.2014
comment
Версия Newtonsoft.Json, которая у меня есть, как в веб-приложении, так и в проекте веб-задания, — 6.0.0.0. Я обновлю вопрос с привязкой...   -  person Daniel    schedule 03.07.2014
comment
Мне удалось решить эту проблему, удалив перенаправления и заставив веб-приложение и веб-задание использовать NewtonSoft.Json 4.5.1. Комментарий здесь заставляет меня думать, что он находится в GAC на ОС Azure WebSite, и я ничего не могу с этим поделать... newtonsoft.com/archive/2014/02/01/   -  person Daniel    schedule 03.07.2014
comment
Я запускаю Json.Net v6 в веб-задании, и перенаправления привязки (вместе с другими настройками) выбираются из app.config. Вы уверены, что этот файл развернут рядом с файлом .exe?   -  person trailmax    schedule 04.07.2014
comment
Ну, он переименовывается в someapp.exe.config, но да, он находится вместе с exe (т.е. находится в zip-файле, который я загружаю). Обратите внимание, что я получаю это только во время выполнения, когда что-то вызывает код JSON.NET. Если вы ссылаетесь на JSON.NET, но ничего с ним не делаете, я не думаю, что вы получите такое поведение.   -  person Daniel    schedule 07.07.2014


Ответы (1)


Я столкнулся с той же проблемой с пакетом SDK Azure WebJob. Я получил это, используя ответ на этот связанный вопрос с риском предоставления дублирующего ответа (но поскольку получил отрицательный голос ):

  UnInstall-Package Microsoft.Azure.Jobs

  Install-Package Microsoft.Data.Services.Client -Version 5.6.0

  Install-Package Newtonsoft.Json -Version 4.0.5

  Install-Package Microsoft.Azure.Jobs
person Tom Cantrell    schedule 12.07.2014
comment
@jasonAller добавил соответствующие части ответа. - person Tom Cantrell; 13.07.2014
comment
Это действительно решило проблему, и я думаю, что это «лучшее» на данный момент. Я до сих пор не на 100% понимаю, что бы я делал, если бы JSON.NET v 6 был нужен... - person Daniel; 15.07.2014
comment
@jasonAller может кто-нибудь объяснить, почему это заслуживает отрицательного голосования после того, как я нашел время, чтобы ответить на ваш отзыв в дополнение к решению вопроса? - person Tom Cantrell; 20.07.2014
comment
@Daniel это вызвано ссылками в SDK веб-заданий MSFT, которые я не могу решить напрямую. Обходной путь - это все, что у меня есть на данный момент. Рад, что это помогло. - person Tom Cantrell; 20.07.2014