.net 方法调用抛出“Method not found:System.Threading.Tasks.Task”,但主项目中的代码相同

s3fp2yjn  于 2023-06-25  发布在  .NET
关注(0)|答案(1)|浏览(271)

我有一个方法SendEmail,它从接口调用并抛出:System.MissingMethodException: 'Method not found: 'System.Threading.Tasks.Task Microsoft.Graph.IUserSendMailRequest.PostAsync()'.'应用程序甚至不会在方法开始时命中断点。
异常中描述的方法是SendEmail代码的一部分,SendEmail代码位于ASP.NET Core应用程序(均为.NET 6.0)引用的类库项目中。如果我将SendEmail代码复制粘贴到测试控制器中,它可以正常工作。
为什么从接口调用SendEmail时代码不工作?我该怎么解决这个问题?

yyhrrdl8

yyhrrdl81#

问题似乎是包含Microsoft.Graph.IUserSendMailRequest.PostAsync()方法的库(Microsoft.Graph)之间的不匹配。包含SendEmail的类库项目使用的是旧版本(3.35.0)。通常情况下,这不是问题,因为编译器会升级到ASP.NETCore项目中的较新版本(4.34.0)。然而,在这种情况下,运行时无法正常工作。
这表明新版本与旧版本不向后兼容,尽管相同的代码可以同时编译这两个版本。基本上,SendEmail代码是用旧版本库编译的,并在运行时与新版本库链接。
解决方案是在两个项目中使用相同版本的Microsoft.Graph。

相关问题