2016-11-03 13 views
0

我目前的任務是將代碼庫移植到.NetCore。從根本上說,這是相當順利的,但有一件事引起了我的關注,並且保持了平臺的獨立性。將庫移植到.NetCore。我如何知道哪些nuget引用是'full'.NetCore(因此Linux/Mac兼容)

Core旨在運行在Mac和Linux上,因此我希望確保該庫在Mac和Linux上運行後也能運行。但是,爲了讓事情順利進行,我發現自己包含了很多非Microsoft.AspNetCore。* nuget軟件包。 (例如System.Diagnostics.Process,System.Net.Http,System.Threading.Thread等)

很明顯,這不會在Windows上出現問題,但我不知道是否會導致問題,如果說,有人瞄準Linux是否包含對我的庫的引用?

如果這不是問題,那麼很好,但如果是這樣的話,我怎麼知道哪個nuget包可以在多平臺庫中使用? (例如,是否只有AspNetCore才能跨平臺工作?)

回答

1

System。*軟件包(通常)從https://github.com/dotnet/corefx開始,99.5%的用例將在macOS和(受支持的)Linux分發)與Windows上的相同。

There is System。*包無法按照您期望的方式工作的情況。主要來自於.NET增加了方便API來包裝Windows行爲的時代。因此,例如,讀取註冊表項將不起作用(甚至在未來註冊表API工作的時候,它肯定不會受到合法配置單元的支持,因此,讀取不明確的值會報告未找到的密鑰)。大多數情況下,當一個API不能在Linux/macOS上工作時,它會拋出PlatformNotSupportedException,而不會產生某種意想不到的結果。

因此,只要你在做什麼並不特別感覺到「Windows-y」,那麼netstandard *或netcoreapp * RID的所有內容都應該是Just Work。如果沒有,你可以隨時在corefx github項目上提出問題。

相關問題