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

ux6nzvsh  于 5个月前  发布在  .NET
关注(0)|答案(1)|浏览(76)

我将一个大型库项目从.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标准2.0库项目中,不仅所有内容都是可访问的,(系统.Web.缓存、系统.Web.安全等),但我可以编写代码并编译,甚至没有警告。这似乎是有问题的,因为其他开发人员可能会编写访问System.Web命名空间不支持的部分的代码,我已经创建了一个代码分析器(DiagnosticAnalyzer)包来防止这种情况发生,但我仍然不明白为什么这是必要的。除了HttpUtility,为什么System.Web的其余部分可以在.Net Standard中访问?

8xiog9wr

8xiog9wr1#

我找到了问题。我有一个对Microsoft.AspNetCore.SystemWebAdapters的引用。删除它可以解决问题。

相关问题