【发布时间】:2021-11-23 09:55:56
【问题描述】:
情况是这样的。
我有 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 包管理器中获取它们。 NuGets 创建和部署是通过 GitHub 操作完成的。
目前在 .NET Core 3.1 REST 项目中使用这两个 dll,没有任何问题。
当我尝试在 .NET Core 2.2 REST 项目中使用它们时,问题就开始了:虽然本地一切都很好(调试),但在发布和部署之后,我发现 dll B 以某种方式破坏了整个应用程序。
应用程序启动,但对 REST 服务的每个请求都没有收到任何响应(我认为它永远不会到达端点,说实话)。文本文件和事件查看器中没有来自应用程序或 IIS 的日志/错误。
我发现这与代码无关,因为在不使用任何方法的情况下引用 dll B 足以破坏整个事情。
A dll 完全没有问题。
这是我尝试过的(不完全按照这个顺序):
- 删除了所有引用并注释了 B 中的每一行代码 -> 仍然破坏了应用程序(这让我意识到这不是代码或引用问题)
- 从另一个项目中引用它:这次是 WebApp .NET Core 2.0 -> 仍然破坏应用程序
- 从 .NET Core 2.2 中的一个全新空项目(Visual Studio 用作启动模板的 Weather REST 服务)中引用它 -> 完全没有问题
- 向 Weather REST 服务添加了其他应用程序具有的所有依赖项(以发现任何不兼容性)-> 仍在开发 Weather 项目
- 手动创建并推送 NuGet 包 -> 仍然破坏应用程序
- 部署在两台不同的机器上(一台内部机器和一台 AWS) -> 两台机器上的应用程序仍然崩溃
- 将其引用为本地程序集(而不是来自 NuGet)-> 它有效!
因此,即使是对空 dll 的 NuGet 引用也会破坏应用程序,而本地程序集则不会。这不是框架/环境问题,因为新的 .NET Core 2.2 项目和另一个 .NET Core 3.1 项目运行良好(在同一台机器上)。 这不是 .NET Standard 编译问题,因为 A dll 遵循完全相同的部署方法,并且在任何地方都可以使用。 没有抛出错误。 调试时一切正常。
我很绝望。有什么建议吗?
谢谢
【问题讨论】:
标签: c# .net nuget .net-standard-2.0 github-package-registry