2017-10-12 85 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

我不得不這樣做一次。我需要一種方法來調用不同的實現。我只是用反射嘗試一個接一個的名字。

試圖檢測運行時庫是愚蠢的。直接檢測差異。它不太可能突破。

相關問題