【问题标题】:Azure Function v2 references a project with a higher version of Newtonsoft.Json than Microsoft.NET.Sdk.FunctionsAzure Function v2 引用了 Newtonsoft.Json 版本高于 Microsoft.NET.Sdk.Functions 的项目
【发布时间】:2019-10-16 12:11:02
【问题描述】:

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

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

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

【问题讨论】:

  • 您需要的 12 中究竟有什么...就像 GitHub 上提到的用于降级您的版本需求的 cmets 之一...?
  • 按你说的做(函数项目中的直接引用)每次都对我有用。如果您将警告作为错误打开,您可能还需要在项目配置中仅禁用它生成的特定警告 (NU1608)。
  • 你碰到的墙是什么?
  • @ChrisGillum 我遇到的墙是引用的运行时错误。
  • 您需要使用下面@ChrisGillum 建议的内容。这是一个很好的答案,请点赞

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


【解决方案1】:

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

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

尝试这样做:

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

如果这能让你更进一步,请告诉我。

【讨论】:

    猜你喜欢
    • 2018-09-14
    • 2018-02-14
    • 2017-03-05
    • 2021-09-27
    • 1970-01-01
    • 1970-01-01
    • 2017-06-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多