How do I determine what platform my C# code is running on? for example whether it is running on Linux or windows so that I can execute different code at runtime.
I have a C# Windows application that I want to build to target Windows and Linux platforms.
So far I have created two project files pointing to the same set of source code files. I then use a conditional compilation statement one of the projects called LINUX.
Where there are difference in the actual code I use conditional statements using the conditional compilation statement, for example,
#if (LINUX) ' Do something #endif
Is there a better way of doing this? I don't really want to have two project files.
I found this recommendation on one of Microsoft's blogs:
We recommend you to use RuntimeInformation.IsOSPlatform() for platform checks.
Reference: Announcing the Windows Compatibility Pack for .NET Core
IsOSPlatform()
takes an argument of types OSPlatform
which has three values by default: Windows
, Linux
and OSX
. It can be used as follow:
if (RuntimeInformation.IsOSPlatform(OSPlatform.Linux)) { // Do something }
The API is part of .NET Standard 2.0, and therefore available in .NET Core 2.0 and .NET Framework 4.7.1.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With