2017-10-12 70 views
1

具体来说,我需要确定的是调用发展平台(即.NET核心与.NET框架相对于其他),而不是操作系统的信息,我可以通过System.Environment.OperatingSystem.Platform得到。有没有办法做到这一点? (为了给出我的具体用例的更多细节,我引用了一个库 - log4net - 它通过传递一个XML资源来配置它。我想在可用的情况下使用它的一些可配置功能,如果可用,它们在.NET下受支持。框架,但不是在.NET的核心,我希望能够因此将它传递不同版本的资源,这取决于它,我正在使用的。)我如何确定在运行时从一个.NET标准库调用平台?

+0

毫无疑问,.NET标准确实不会这么做。因为这可能会使图书馆*不*标准。如果有必要,考虑只是让主应用程序告诉你,它知道。 –

回答

0

从运行环境解决可能被证明是不确定运行时更改。我会在应用程序运行之前强制执行该问题。如前所述,您可以通过运行时或配置它。

另一种选择是类似SL4J提供的东西。运行时确定取决于您部署应用程序的方式。

你可以创建自己的暴露平台的信息接口。然后,在部署时,只需将相应的程序集添加到安装中即可。加载程序集并调用所需的方法。

或者你看微软如何处理类似的情况在这里:https://blogs.msdn.microsoft.com/dotnet/2016/09/26/introducing-net-standard/

0

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

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

相关问题