首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >.NET核心"RuntimeInformation.OSDescription“属性(以及.Net核心多平台支持的一般实现)

.NET核心"RuntimeInformation.OSDescription“属性(以及.Net核心多平台支持的一般实现)
EN

Stack Overflow用户
提问于 2020-10-05 16:06:13
回答 1查看 551关注 0票数 0

在花了8个小时在谷歌周围进行无止境的搜索之后,我不得不在社区里问你们。请帮助:-)

这是理论上的Q,我想了解微软.Net Core是如何实现这一“魔力”的。虽然我了解如何实现,但我自己的代码能够在不同的操作系统上工作(通过使用特定平台的接口和P/Invoke ),答案是:https://stackoverflow.com/a/52297584/10696080

我不明白.Net Core 是如何实现相同功能的。例如,用于"RuntimeInformation.OSDescription“或"RuntimeInformation.IsOSPlatform”。

通过查看源代码 of .Net Core RuntimeInformation类,它看起来不是由接口和P/Invorke实现的,而是通过一些神秘的方法实现的。

到目前为止我的发现是:

  1. 我发现了更普遍的问题:.Net核心多平台底层框架实现,但没有回答我的Q。
  2. 微软网站也没有解释这一点
  3. 反编译System.Runtime.InteropServices.RuntimeInformation.dll只显示空的静态属性

问题:请告诉我如何了解.Net核心CLR如何实现多平台支持(更具体地说,RuntimeInformation.OSDescription是如何工作的)。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-10-08 12:28:23

.Net核心CLR实现了通过以下方式实现的多平台支持:

  1. .NET核心源代码具有特定的OS预处理器指令: *#if TARGET_WINDOWS ..。 埃利夫TARGET_OSX ..。 #elif TARGET_UNIX ...*
  2. 对每个目标平台分别进行条件编译和DLL编译。所以有一些版本的.NET核心DLL(在.NET Core中)
  3. 在部署应用程序时: A. 框架依赖部署。您的应用程序使用操作系统特定的DLL版本,该版本已经安装在目标计算机上(在.NET核心运行时中) B. 自包含部署。从SDK获取并包含在应用程序文件夹中的平台特定DLL
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64212274

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档