首页 > 解决方案 > Azure Function v2 引用了 Newtonsoft.Json 版本高于 Microsoft.NET.Sdk.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,版本=11.0.0.0,文化=中性,PublicKeyToken=30ad4fe6b2a6aeed”的引用程序集“Newtonsoft.Json”更高的版本

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

标签: c#azurejson.netazure-functionsazure-durable-functions

解决方案


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

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

尝试这样做:

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

让我知道这是否能让你更进一步。


推荐阅读