C# 如何在运行时从.NET标准库中识别调用平台?

C# 如何在运行时从.NET标准库中识别调用平台?,c#,.net,.net-standard,.net-standard-2.0,C#,.net,.net Standard,.net Standard 2.0,具体来说,我需要确定的是调用开发平台(即NET Core vs.NET Framework vs.Other),而不是我可以通过system.Environment.OperatingSystem.platform获得的操作系统信息。有办法做到这一点吗 (为了更详细地介绍我的特定用例,我引用了一个库log4net,它是通过向它传递一个XML资源来配置的。它的一些可配置功能(如果可用的话)在.NET Framework下受支持,但在.NET Core下不受支持,因此我希望能够向它传递不同版本的资源

具体来说,我需要确定的是调用开发平台(即NET Core vs.NET Framework vs.Other),而不是我可以通过system.Environment.OperatingSystem.platform获得的操作系统信息。有办法做到这一点吗


(为了更详细地介绍我的特定用例,我引用了一个库log4net,它是通过向它传递一个XML资源来配置的。它的一些可配置功能(如果可用的话)在.NET Framework下受支持,但在.NET Core下不受支持,因此我希望能够向它传递不同版本的资源依赖项从运行时环境中解决问题可能会随着运行时的变化而变得不确定。我会在应用程序运行之前预先解决这个问题。如前所述,您可以在运行时传递或配置它

另一个选项类似于提供。运行时确定取决于您如何部署应用程序

您可以创建自己的接口以公开平台信息。然后,在部署时,只需将适当的程序集添加到安装中。加载程序集并调用所需的方法


或者您可以在这里看到Microsoft是如何处理类似情况的:

我不得不这样做一次。我需要调用一种不同实现的方法。我只是使用反射来尝试一个又一个名称


试图检测运行库是愚蠢的。直接检测差异。它不太可能被打破。

绝对是NETStand的点。不要这样做。因为这可能使库不规范。如果必须的话,请考虑让主应用程序告诉你这一点,它知道。