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

C# Azure Function v2引用的项目具有比Microsoft.NET.Sdk.Functions更高版本的Newtonsoft.Json,c#,azure,json.net,azure-functions,azure-durable-functions,C#,Azure,Json.net,Azure Functions,Azure Durable Functions,我正在写一个v2azure持久函数。将C#对象传递给助手活动函数时,在序列化传递的类型时使用的自定义JsonConverter中会出现运行时错误。自定义JsonConverter位于必须引用Newtonsoft.Json 12.x的库中,而Microsoft.NET.Sdk.Functions被锁定在11.0.2中 jObject错误CS1705:具有标识“ContractLibrary,版本=1.0.0,区域性=中性,PublicKeyToken=null”的程序集“ContractLibra

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

jObject错误CS1705:具有标识“ContractLibrary,版本=1.0.0,区域性=中性,PublicKeyToken=null”的程序集“ContractLibrary”使用“Newtonsoft.Json,版本=12.0.0.0,区域性=中性,PublicKeyToken=30AD4FE6B2A6EED”,其版本高于具有标识“Newtonsoft.Json,版本=11.0.0.0”的引用程序集“Newtonsoft.Json”,文化=中性,PublicKeyToken=30AD4FE6B2A6EED'


我相信这是相关的。在这个问题上,似乎表明添加Newtonsoft.Json 12.x作为函数项目的直接依赖项可能会有所帮助。这有助于另一个功能项目,但现在我又碰到了这堵墙。我能做些什么来缓解这种情况吗?

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

publicstaticvoidmyfunc([ActivityTrigger]MyCustomType输入)
{
// ...
}
尝试这样做:

publicstaticvoidmyfunc([ActivityTrigger]JObject-json)
{
//手动将JObect转换为MyCustomType
}

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

从GitHub上提到的降低您的版本需要的评论来看,您需要的12中到底是什么?按照你说的去做(功能项目中的直接参考)每次都对我有效。如果您的项目配置中有错误警告,您可能还需要仅禁用它生成的特定警告(NU1608)。您遇到的墙是什么?@ChrisGillum我遇到的墙是引用的运行时错误。您需要使用@ChrisGillum下面建议的。这是一个很好的答案,请投票表决