NetCore.App SDK中.Net Framework依赖关系的目的?

时间:2019-06-29 21:14:14

标签: .net-core

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

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

Image of VS

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

1 个答案:

答案 0 :(得分:2)

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

有关兼容性机制的信息,另请参见Compatibility shim used by .NET Standard 2.0