首页 > 解决方案 > NetCore.App SDK 中 .Net Framework 依赖项的用途?

问题描述

VS2019 中的 .Net Core 控制台模板将 Metapackage 添加 Microsoft.NETCore.App为“SDK”,其中包括对 .NetFramework 库的依赖项。

例如,为什么System.ServiceProcess.dll(A .NetFramework 程序集)被列为依赖项而不是System.ServiceProcess.ServiceController.dll(等效的 .NetCore 程序集)?

VS的形象

要实际使用 System.ServiceProcess.dll 中包含的类型,您需要添加对System.ServiceProcess.ServiceController nuget 包的引用。我很困惑为什么 NetCore.App SDK 会将 .NetFramework 程序集列为依赖项,特别是考虑到访问该程序集中包含的类型需要额外的 nuget 包

标签: .net-core

解决方案


这些不是 .NET Framework 程序集,而是提供 API 表面兼容性(程序集/类型标识)以在 .NET Core 上使用现有库或包的编译时参考程序集。其中一些将跨平台工作(如代码取决于为在 .NET Core 2.0 中添加的兼容性而System.Object在其中定义的代码),而另一些可能不会。mscorlib.dllSDK 只是将所有外观/引用程序集添加到编译中,以帮助在编译期间解析引用。它们实际上不包含任何代码。甚至您可以在实际的 .NET Core 运行时中找到的一些 dll 文件也可能只包含类型转发而不包含实际的实现。

有关兼容性机制的信息,另请参阅.NET Standard 2.0 使用的兼容性填充程序。


推荐阅读