私有 nuget 引用在运行时中断 .NET Core 2 webapp

Private nuget reference break .NET Core 2 webapp at runtime

情况是这样的。

我有 2 个用 .NET 标准 2.0 编译的简单 dll(出于兼容性原因)。 第一个(我们称它为 A)除了 NETStandard.Library (2.0.3) 之外没有外部引用。第二个(我们称之为 B)引用 Microsoft.Extensions.Loggin.Abstractions (5.0.0)、Newtonsoft.Json (13.0.1),当然还有 NETStandard.Library (2.0.3)。编译和 运行(本地单元测试)都没有错误。

因为我需要在多个项目中共享它们,所以我使用私有 GitHub 包存储库;我能够从 Visual Studio 中的 NuGet 包管理器获取它们。由于 GitHub 操作,NuGets 创建和部署已完成。

目前在 .NET Core 3.1 REST 项目中使用这两个 dll 没有任何问题。

当我尝试在 .NET Core 2.2 REST 项目中使用它们时出现问题:虽然本地一切正常(调试),但在发布和部署之后我发现 dll B 破坏了整个应用程序不知何故。

应用程序启动但对 REST 服务的每个请求都没有收到任何响应(我认为它永远不会到达端点,说实话)。文本文件和事件查看器中的应用程序或 IIS 没有 logs/errors。

我发现这与代码无关,因为在不使用任何方法的情况下引用 dll B 足以破坏整个事情。

A dll 完全没有问题。

这是我试过的(顺序不完全一样):

因此,即使是对空 dll 的 NuGet 引用也会破坏应用程序,而本地程序集则不会。这不是 framework/environment 问题,因为新的 .NET Core 2.2 项目和另一个 .NET Core 3.1 项目运行良好(在同一台机器上)。 这不是 .NET Standard 编译问题,因为 A dll 遵循完全相同的部署方法并且它在任何地方都有效。 没有抛出错误。 调试时一切正常。

我很绝望。有什么建议吗?

谢谢

我终于想通了,虽然有些地方还是不清楚。

我在 .NETCore2.2 中的项目使用 AspNetCore.All 特定版本(2.2,根据框架)并包含一些 Microsoft.Extensions.Logging dll。

我的 B dll 引用 Microsoft.Extensions.Logging.Abstractions 5.0:下载 B 作为 NuGet 使包管理器解析引用,所以基本上我在我的应用程序中使用 v5.0,而应用程序正在寻找框架中的 v2.2(可能在 GAC 中,这可以解释为什么具有相同引用的全新应用程序运行良好)。

所以我用

解决了
AppDomain.CurrentDomain.FirstChanceException += (sender, eventArgs) => 
{
  //Log everything here
}

我发现它抛出了一个关于 class 我根本没有使用的 的错误; class 存在于 Logging.Abstractions 5.0 中,但不存在于 2.2 中。

因为我不需要 5.0 的任何功能,所以我将其降级为 2.0,现在它非常有用。

仍然不知道为什么事件查看器中没有记录异常。