Функция Azure v2 ссылается на проект с более новой версией Newtonsoft.Json, чем Microsoft.NET.Sdk.Functions - PullRequest
2 голосов
/ 30 мая 2019

Я пишу долговременную функцию Azure v2.При передаче объекта C # во вспомогательную функцию Activity, я получаю ошибку времени выполнения в моем пользовательском JsonConverter, используемом при сериализации передаваемого типа.Пользовательский JsonConverter находится в библиотеке, которая должна ссылаться на Newtonsoft.Json 12.x, тогда как Microsoft.NET.Sdk.Functions заблокирован в 11.0.2.

jObject error CS1705: Assembly 'ContractLibrary'with identity' ContractLibrary, версия = 1.0.0.0, культура = нейтральная, PublicKeyToken = null 'использует' Newtonsoft.Json, версия = 12.0.0.0, культура = нейтральная, PublicKeyToken = 30ad4fe6b2a6aeed ', которая имеет более высокую версию, чем указанная сборка' Newtonsoft.Json 'с идентификатором' Newtonsoft.Json, версия = 11.0.0.0, культура = нейтральная, PublicKeyToken = 30ad4fe6b2a6aeed '

Я считаю, что это GitHub Issue является актуальным. Этот комментарий к этой проблеме, похоже, указывает на то, что добавление Newtonsoft.Json 12.x в качестве прямой зависимости вашего проекта Function может помочь.Это помогло в другом проекте Function, но теперь я снова попал в эту стену.Могу ли я что-нибудь сделать, чтобы смягчить это?

1 Ответ

2 голосов
/ 31 мая 2019

Одна вещь, которую вы можете попробовать - обойти логику сериализации, используемую Durable Functions, и выполнить свою собственную сериализацию. Например, вместо этого:

public static void MyFunc([ActivityTrigger] MyCustomType input)
{
    // ...
}

Попробуйте сделать это:

public static void MyFunc([ActivityTrigger] JObject json)
{
    // manually convert the JObect into MyCustomType
}

Дайте мне знать, если это вас больше не остановит.

...