2016-11-03 5 views
0

私は現在、.NetCoreにコードライブラリを移植することを任されています。基本的に、これはかなりスムーズに進んでいますが、私に懸念を引き起こしているのは1つあり、プラットフォームの独立性を保持しています。.NetCoreにライブラリを移植する。 .NetCore(したがって、Linux/Mac互換)

コアはMacとLinux上で動作するように設計されているので、私が完了した時点でライブラリがMacとLinuxでも動作するようにしたいと考えています。しかし、動作させるためには、Microsoft.AspNetCore。* nuget以外のパッケージがたくさん含まれています。 (例:System.Diagnostics.Process、System.Net.Http、System.Threading.Threadなど)

明らかにこれはWindowsでは問題ではありませんが、 Linuxには私のライブラリへの参照が含まれていましたか?

もしそれが問題ではないが、そうであれば、マルチプラットフォームのライブラリでどのナゲットパッケージが大丈夫になるのかを知るにはどうすればいいですか? (例えば、クロスプラットフォームで動作するAspNetCoreのものだけですか?)

答えて

1

システムパッケージは通常https://github.com/dotnet/corefxであり、99.5%の使用例はmacOSと(サポートされている)Linux Windowsの場合と同じです)。

ここでですが、System。*パッケージは期待通りに機能しません。主にこれは、.NETがWindowsの動作をラップするための便利なAPIを追加していた時代から来ています。たとえば、レジ​​ストリキーの読み取りは動作しません(レジストリAPIが動作する場所でも、正当なハイブにバックアップされないため、わかりにくい値を読み取るとキーが見つかりません)。 APIがLinux/macOSで動作しないときは、何らかの予期しない/間違った結果を生成する代わりに、PlatformNotSupportedExceptionを投げます。

あなたがやっていることが具体的に "Windows-y"と感じられない限り、netstandard *やnetcoreapp * RIDのすべてがJust Workでなければなりません。そうでない場合は、corefx githubプロジェクトでいつでも問題を提出することができます。

関連する問題