抛出的异常:System.Private.CoreLib中的"System.MissingMethodException.dll



我最近在一个项目中从.net核心2.2升级到3.1,一切都很顺利。突然间,我开始出现这个错误,我甚至不知道缺少了哪种方法。

我收到的异常消息是:Method not found: 'System.Threading.Tasks.Task1<Int32> Microsoft.EntityFrameworkCore.RelationalDatabaseFacadeExtensions.ExecuteSqlCommandAsync(Microsoft.EntityFrameworkCore.Infrastructure.DatabaseFacade, System.String, System.Threading.CancellationToken, System.Object[])'.

我不确定我做错了什么,因为我没有遇到任何编译时错误,而且我过去也使用过这种方法。我也尝试过在方法执行之前放置断点,但它甚至没有达到断点,并且抛出了异常。

我可以提供任何其他必要的信息。

我能够弄清楚这一点。升级到.net core 3.1后,我在项目中使用了不正确的NuGet包。

我使用的是Microsoft.EntityFrameworkCore.Relational.Design1.1.6版本,它不是正确的软件包。我应该使用Microsoft.EntityFrameworkCore.Relational3.1.0或更高版本。

通过使用第一个NuGet包,我可以在编译时访问ExecuteSqlCommandAsync,并且不会抛出任何错误,但在运行时找不到该方法。我本应该使用ExecuteSqlRawAsync,它在移动到.net核心3或更高版本时发生了更改。

希望这也能帮助其他人。

最新更新