如何在运行时检查操作系统版本,例如在Windows或Linux上,而不使用条件编译语句

问题描述 投票:42回答:7

如何确定我的C#代码在哪个平台上运行?例如,它是在Linux还是Windows上运行,以便我可以在运行时执行不同的代码。

我有一个要针对Windows和Linux平台构建的C#Windows应用程序。

到目前为止,我已经创建了两个指向相同源代码文件集的项目文件。然后,我使用条件编译语句之一的项目称为LINUX

例如,在实际代码中有区别的地方,我使用条件编译语句来使用条件语句,

#if (LINUX)
    ' Do something
#endif

是否有更好的方法?我真的不想有两个项目文件。

c# windows winforms visual-studio-2008
7个回答
75
投票

[编者注


37
投票

我在Microsoft的一个博客中发现了此建议:


11
投票

用途:


3
投票

您可以使用Linux在运行时检查您所使用的平台。


2
投票

为了扩展其他答案,如果功能的Linux和Windows实现不兼容(即,需要引用仅适用于特定平台的库),您还可以使用一个接口并具有两个单独的程序集,在每个平台上编写和编译的代码,其类型可实现此接口。


0
投票

另一个选择是使用OSX调用shell脚本以获取OSX,如下所示:


0
投票

没有任何这样的方法,但是您可以使用此方法有条件地对其进行检查:

© www.soinside.com 2019 - 2024. All rights reserved.