C# コードがどのプラットフォームで実行されているかを判断するにはどうすればよいでしょうか。たとえば、実行時に異なるコードを実行できるように、Linux で実行されているか、Windows で実行されているかなどです。
Windows および Linux プラットフォームをターゲットとする C# Windows アプリケーションを構築したいと考えています。
これまで、同じソースコードファイルセットを指す2つのプロジェクトファイルを作成しました。次に、条件付きコンパイルステートメントを使用して、プロジェクトの1つにリナックス。
実際のコードに違いがある場合は、条件付きコンパイルステートメントを使用して条件文を使用します。たとえば、
#if (LINUX)
' Do something
#endif
これを行うより良い方法はありますか? 実際には 2 つのプロジェクト ファイルを持ちたくありません。
ベストアンサー1
Microsoft のブログの 1 つで、次のような推奨事項を見つけました。
プラットフォームのチェックには、RuntimeInformation.IsOSPlatform() を使用することをお勧めします。
参照:.NET Core 向け Windows 互換機能パックの発表
IsOSPlatform()
型の引数を取るOSPlatform
デフォルトでは次の 3 つの値があります。Windows
、Linux
そしてOSX
以下のように使用できます。
if (RuntimeInformation.IsOSPlatform(OSPlatform.Linux))
{
// Do something
}
API は .NET Standard 2.0 の一部であるため、.NET Core 2.0 および .NET Framework 4.7.1 で利用できます。