这真让我抓狂.我使用Newtonsoft.Json获取Azure函数的加载错误.
这是一个.netstandard2.0项目,我安装了11.0.2版本.我已经浏览了网页,其他大多数人都使用旧版本的Microsoft.NET.Sdk.Functions:1.0.13但我使用的是1.0.14
请参阅下面的项目文件:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netstandard2.0</TargetFramework>
<AzureFunctionsversion>v2</AzureFunctionsversion>
<RootNamespace>modoapi</RootNamespace>
</PropertyGroup>
<ItemGroup>
<packagereference Include="Autofac" Version="4.2.1" />
<packagereference Include="Microsoft.Azure.WebJobs" Version="3.0.0-beta5" />
<packagereference Include="Microsoft.Azure.WebJobs.ServiceBus" Version="3.0.0-beta5" />
<packagereference Include="Microsoft.NET.Sdk.Functions" Version="1.0.14" />
<packagereference Include="Newtonsoft.Json" Version="11.0.2" />
</ItemGroup>
<ItemGroup>
<None Update="host.json">
<copyToOutputDirectory>PreserveNewest</copyToOutputDirectory>
</None>
<None Update="local.settings.json">
<copyToOutputDirectory>PreserveNewest</copyToOutputDirectory>
<copyToPublishDirectory>Never</copyToPublishDirectory>
</None>
</ItemGroup>
</Project>
我查看了我的项目的所有依赖项,他们都指向Newtonsoft.Json 11.0.2.
该文件存在于我的输出bin文件夹中.我已经清理了解决方案.已更新至最新的VS和Azure功能以及WebJobs工具15.0.40608.0
功能应用程序启动正常,但是当我向队列添加消息以调用触发器时,我在控制台中收到以下错误.
[12/07/2018 10:56:36] Executed ‘ExecuteWorkItem’ (Failed,
Id=6d87f5e9-c331-4934-a3f3-b9bebf756b54) [12/07/2018 10:56:36]
System.Private.CoreLib: Exception while executing function:
ExecuteWorkItem. test-api: Could not load file or assembly
‘Newtonsoft.Json, Version=11.0.0.0, Culture=neutral,
PublicKeyToken=30ad4fe6b2a6aeed’. Could not find or load a specific
file. (Exception from HRESULT: 0x80131621). System.Private.CoreLib:
Could not load file or assembly ‘Newtonsoft.Json, Version=11.0.0.0,
Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed’.
这是我的功能的签名
public static class ExecuteWorkItem
{
[FunctionName("ExecuteWorkItem")]
public static async Task Run(
[QueueTrigger("work-item")]string queueItem,
TraceWriter log,
ExecutionContext executionContext,
[Inject(typeof(IWorkItemEngine))]IWorkItemEngine workItemEngine,
[Table("ResultData", Connection = "AzureWebJobsstorage")] CloudTable resultTable,
[Table("SimulationNodeData", Connection = "AzureWebJobsstorage")] CloudTable simulationNodeTable)
{}
任何想法现在都会非常感激,唯一似乎有类似问题的人就是这个人:Go to the bottom of his post
他没有回复他的查询,他在Mac环境中,而我在Windows 10上.
任何帮助将非常感激.
提前致谢
解决方法:
对于v2函数,函数sdk 1.0.14默认引用Newtonsoft.Jon v11.0.2,不需要显式引用它,与Microsoft.Azure.WebJobs相同.问题是关于VS使用的功能核心工具(CLI).
在本地调试时检查此行的CLI输出.
Starting Host (HostId=xx, InstanceId=xxx, Version=2.0.11651.0, ...)
如果您完全看到Version = 2.0.11651.0,则表示您的VS正在使用旧版本的CLI.
实际上,最新版本的Azure功能和Web作业工具(在VS菜单上,工具>扩展和更新)是15.0.40617.0.此版本使用最新的CLI(主机版本2.0.11888),其中v11 Json.Net得到了很好的支持.更新此扩展可能会解决您的问题.
似乎Visual Studio for Mac仍然利用旧的CLI(主机版本2.0.11651),Mac用户可以下载新的功能核心工具using Homebrew并在内容根路径中运行func start.或者switch update channel将他们的VS更新为最新/预览版本.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。