Azure Function v2引用的项目具有比Microsoft.NET.Sdk.Functions更高版本的Newtonsoft.Json

时间:2019-05-30 20:10:24

标签: c# azure json.net azure-functions azure-durable-functions

我正在编写v2 Azure持久功能。将C#对象传递给辅助活动函数时,我在自定义JsonConverter中遇到了运行时错误,该错误用于序列化要传递的类型。自定义JsonConverter在必须引用Newtonsoft.Json 12.x的库中,而Microsoft.NET.Sdk.Functions锁定在11.0.2中。

  

jObject错误CS1705:身份为'ContractLibrary,Version = 1.0.0.0,Culture = neutral,PublicKeyToken = null'的程序集'ContractLibrary'使用'Newtonsoft.Json,Version = 12.0.0.0,Culture = neutral,PublicKeyToken = 30ad4fe6b2a6aeed'的版本高于引用的程序集“ Newtonsoft.Json”,其标识为“ Newtonsoft.Json,版本= 11.0.0.0,Culture = neutral,PublicKeyToken = 30ad4fe6b2a6aeed”

我相信此GitHub Issue是相关的。关于该问题的This comment似乎表明,将Newtonsoft.Json 12.x添加为Function项目的直接依赖项可能会有所帮助。这在另一个Function项目中有所帮助,但现在我又碰到了这堵墙。我有什么办法可以减轻这种情况?

1 个答案:

答案 0 :(得分:2)

您可以尝试做的一件事是绕过耐用功能使用的序列化逻辑,并自己进行序列化。例如,不要这样做:

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

尝试这样做:

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

让我知道这是否能进一步帮助您。