我正在运行一个自定义的EntityFrameworkCore版本,它有一些我需要的附加功能。从2019/07/25号星期四开始,我将在我的4项应用服务计划中的3项获得MissingMethodException :开发、舞台和生产。测试、阶段和生产环境是同步的,并且包含相同的代码。因此,测试环境仍然有效是非常奇怪的。我还在Azure Devops管道中设置了集成测试。管道执行以下任务:使用dotnet、dotnet还原、dotnet build、dotnet测试、dotnet发布。所有的测试都成功了。只有在app服务上,相同的请求才不起作用。
这是非常可怕的,一个月的正常运作的东西突然一夜之间完全停止运作。代码没有任何变化。
我读到MissingMethodException指向一个DLL问题(System.MissingMethodException: Method not found?)。MissingMethodException发生在自定义代码中,因此DLL问题似乎是合乎逻辑的,但我不知道为什么所有的东西都在测试环境上工作,为什么它以前工作过!我怎么才能正确诊断这个呢?
发布于 2019-07-31 10:15:21
显然,.NET核心依赖于EntityFrameworkCore。由于这种依赖关系,安装.NET Core时提供了它自己的Microsoft.EntityFrameworkCore DLL。只要我的自定义EntityFrameworkCore DLL的版本高于它所安装的DLL,这就不是一个问题。但是它们应用的版本控制似乎不是EntityFrameworkCore的版本控制,而是所使用的运行时的版本控制。上周,在幕后对API应用程序进行了更新。这意味着安装了2.2.6运行时。此运行时的EntityFrameworkCore DLL的版本号高于我的自定义DLL。正因为如此,应用程序所使用的DLL突然发生切换,并且不再找到导致MissingMethodException的自定义方法。
在安装了最新的.NET SDK之后,我诊断了这个问题。这导致安装了最新的运行时,而我的解决方案在本地的行为方式与已部署的解决方案相同。我打开了模块窗口(Debug -> Windows -> Modules),然后意识到发生了什么。
这意味着我不再需要自我包含的部署,但是为了避免由于随机更新而造成的破坏,我还是应该对它进行研究。
https://stackoverflow.com/questions/57239788
复制相似问题