为什么不受支持的 System.Web 类仍然可以在 .Net Standard 中访问?

问题描述 投票:0回答:1

我即将完成将大型库项目从 .Net Framework 4.7.2 移植到 .Net Standard 2.0 的任务。该库以前使用 System.Web 命名空间,但由于 .Net Standard 不支持该命名空间的大部分,因此我重构或删除了所有 System.Web 内容。现在更新已完成并且解决方案按预期工作,我发现我仍然可以编写代码来访问 .Net Standard 不支持的 System.Web 部分。我预计这不会被允许。我假设不受支持的类和枚举等根本不存在或不可访问。如果我创建一个 .Net 6 或 8 项目,我会发现 HttpUtility 是 System.Web 中唯一可用的类。为什么 .Net Standard 项目有所不同?在我的 .Net Standard 2.0 库项目中,不仅所有内容都可以访问(System.Web.Caching、System.Web.Security 等),而且我可以编写代码并进行编译,甚至无需发出警告。这似乎是有问题的,因为其他开发人员可能会编写访问 System.Web 命名空间不受支持的部分的代码并部署该代码。我创建了一个代码分析器(DiagnosticAnalyzer)包来防止这种情况发生,但我仍然很困惑为什么这是必要的。 除了 HttpUtility 之外,为什么 System.Web 的其余部分可以在 .Net Standard 中访问?

c# asp.net .net-standard .net-standard-2.0
1个回答
0
投票

我发现了问题。我引用了 Microsoft.AspNetCore.SystemWebAdapters。删除即可解决问题。

© www.soinside.com 2019 - 2024. All rights reserved.