.net-core - NetCore.App SDK 中 .Net Framework 依赖项的用途?
问题描述
VS2019 中的 .Net Core 控制台模板将 Metapackage 添加 Microsoft.NETCore.App
为“SDK”,其中包括对 .NetFramework 库的依赖项。
例如,为什么System.ServiceProcess.dll
(A .NetFramework 程序集)被列为依赖项而不是System.ServiceProcess.ServiceController.dll
(等效的 .NetCore 程序集)?
要实际使用 System.ServiceProcess.dll 中包含的类型,您需要添加对System.ServiceProcess.ServiceController nuget 包的引用。我很困惑为什么 NetCore.App SDK 会将 .NetFramework 程序集列为依赖项,特别是考虑到访问该程序集中包含的类型需要额外的 nuget 包
解决方案
这些不是 .NET Framework 程序集,而是提供 API 表面兼容性(程序集/类型标识)以在 .NET Core 上使用现有库或包的编译时参考程序集。其中一些将跨平台工作(如代码取决于为在 .NET Core 2.0 中添加的兼容性而System.Object
在其中定义的代码),而另一些可能不会。mscorlib.dll
SDK 只是将所有外观/引用程序集添加到编译中,以帮助在编译期间解析引用。它们实际上不包含任何代码。甚至您可以在实际的 .NET Core 运行时中找到的一些 dll 文件也可能只包含类型转发而不包含实际的实现。
有关兼容性机制的信息,另请参阅.NET Standard 2.0 使用的兼容性填充程序。
推荐阅读
- c++ - 在命名空间 'cv' 中打开 cv 'SparsePyrLKOpticalFlow'
- python - 仅使用 python 置换最后一列
- c - c:根据 SEQ 字段重新排序 TCP 数据包
- javascript - 要图像的 Unicode 字符
- java - 使用 java.lang.Process 删除路径中有空格的 hdfs 文件时出现问题
- string - Arduino、esp8266 和服务网页
- ios - 将 Flutter 应用上传到 AppStore 导致 App.framework 不支持 Info.plist 中指定的最低 OS 版本
- python - 请求期间的猴子补丁功能
- erlang - Erlang编译器不断抛出奇怪的语法错误
- amazon-web-services - 没有 UI 表单的非交互式 ALB 身份验证?