Kestrel 失败:无法加载 Microsoft.Extensions.Logging.Abstractions

Kestrel fail: Can not load Microsoft.Extensions.Logging.Abstractions

我有一个非常简单的 Kestrel / ASP.NET 核心项目已成功部署到我的 Windows 2008 R2 服务器..(从一个空的 Web 项目 + IdentityServer4 nuget I was following this Getting Started page 开始)

所以,我最初可以检索 'discovery' JSON 文档。

然后,(per this guide) 我向其中添加了几个 NuGet 包,一些 views/CSS,等等...

升级后的解决方案在我的 Win7 开发箱上运行良好,但是,在重新部署之后......现在我得到了可怕的 502.5 错误页面。如果我进入服务器并尝试通过命令行 "jump start" 可执行文件。我会看到这个错误:

Unhandled Exception: System.IO.FileLoadException: Could not load file or assembly 'Microsoft.Extensions.Logging.Abstractions, Version=1.1.1.0, Culture=neutral,PublicKeyToken=adb9793829ddae60' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040) at Ross.Web.Applications.Identity.Program.Main(String[] args)

我哪里错了?

我可以看到上述 DLL Microsoft.Extensions.Logging.Abstractions 已发布到服务器的文件系统。我猜我需要做一个绑定重定向或其他东西,但是,我太新了,不知道怎么做。

更新
将我的 NuGet 包升级到最新版本后.. 错误类似,但现在找不到:Microsoft.AspNetCore.Hosting.Abstractions, Version=1.1.2.0

好的,我必须清除我的服务器目录.. 并重新部署。 我看到了关于删除 'bin' 的其他答案,但很困惑,因为 core 网络部署没有实际的 /bin 目录。

现在,我的意思是,"Clear out the binaries.. wherever they may be"

这是混合使用 1.1.0 和 1.1.1 asp.net 核心依赖项时的常见问题。

最简单的解决方案是将所有依赖项更新到 1.1.1。如果这不可能,那么您将需要添加绑定重定向以将 1.1.1 依赖项重定向到目标 1.1.0 程序集。

更改这些依赖项或添加绑定重定向后,清除本地的 /bin 文件夹,并在下一次构建时启用清理。

有多个项目在解决的朋友,注意:

这主要是因为您的解决方案中有多个项目,并且在两个项目中都安装了提到的软件包但是 不同的版本.

假设异常如下:

只需停止调试并转到 Manage NuGet Packages for Solution 并在已安装选项卡中搜索该包:

如您所见,我在两个不同版本的项目中都有那个包,这就是重点!只需将低版本更新为高版本即可。