有谁知道如何确定你的c#代码运行的平台,例如它是在linux或windows上运行,以便我可以在运行时执行不同的代码.
我有一个ac#windows应用程序,我想构建目标Windows和Linux平台.
到目前为止,我创建了两个指向同一组源代码文件的项目文件.然后,我使用条件编译语句之一称为LINUX的项目.
在实际代码中存在差异的情况下,我使用条件编译语句使用编码语句,例如
#if (LINUX)
' do something
#endif
Run Code Online (Sandbox Code Playgroud)
有没有更好的方法呢?我真的不想拥有2个项目文件.
提前致谢.
我正在寻找一种方法来检测我的C#应用程序是否在Windows 10上运行.
我曾希望Environment.OSVersion会做的伎俩,但这似乎返回Version的6.3.9600.0在Windows 8.1和Windows 10.
如其他解决方案,这似乎并没有的Windows 8和Windows 10之间进行区分两种.
有什么建议?
为什么我需要这样做?
因为我使用WinForms WebBrowser控件来托管OAuth页面,该页面在旧的IE版本中崩溃并烧毁(我的应用程序连接到用户的Nest帐户 ......).
默认情况下,WebBrowser控件模拟IE7.使用注册表项,您可以告诉它模拟主机PC上安装的最新版本的IE.然而,该工作值高达8.1的Windows(和Windows 10的预发行版)无法在Windows 10的最终版本.
使用System.Environment.OSVersion命名空间 确定托管ASP.NET应用程序的Microsoft OS的最佳方法是什么
我需要一个Windows XP,Windows Server 2003和Windows Vista的示例
这是我试图使用伪代码完成的
switch(/* Condition for determining OS */)
{
case "WindowsXP":
//Do Windows XP stuff
break;
case "Windows Server 2003":
//Do Windows Server 2003 stuff
break;
case "Windows Vista":
//Do Windows Vista stuff
break;
}
Run Code Online (Sandbox Code Playgroud) 我想确定我的程序是否在Windows Server的某个版本上运行.显然,System.Environment不包含有关Windows是服务器版本的事实的信息(OS版本对象中没有此类信息).
我知道我可以SystemInformation.TerminalServerSession用来检查我的程序是否在远程桌面上运行(另请参阅此问题),但如果用户只是远程访问普通客户端Windows机器,情况也是如此.
那么是否有一种支持的方法来确定代码是在服务器上还是在客户端计算机上运行?如果需要,我不介意使用P/Invoke.
注意:我不想"Server"在产品名称中搜索字符串,因为由于本地化,这可能不适用于某些系统.