在C#中定义Os版本

我有一个问题,我找不到在编译时检测Windows版本的方法。

我的目的是创建一个依赖于Interface的可执行文件,它只在特定版本的windows中定义。

因此,为了使我的可执行跨窗口版本,我希望能够为特定的Windows版本定义包含和部分代码。

首先,是否可以在编译时包含特定的Windows版本?

其次,如果没有,为多窗口操作系统版本设计应用程序的最佳方法是什么? 一个可执行文件?

非常感谢你的时间,

你应该真的转过身来。 最好在运行时解决这个问题。 你可以做什么:

  • 创建一个定义您要执行的操作的界面;
  • 为不同的平台创建单独的实现(在您的示例中,将有一个Windows10Implementation类,它调用INetFwRule3 );
  • 然后,在您的代码中,检查Environment.OSVersion并为该特定平台创建实现类。

如有必要,您可以在单独的类库中拆分实现,因此您不必总是加载特定于操作系统的东西,但仅在您需要时。

您是否想要从正在运行的应用程序中触发某些源代码的编译? 我可以想象这是可能的。 在这种情况下,您应该能够在Environment.OSVersion中找到操作系统版本

但更好的方法是:

..包括所有版本的代码,并确定在运行时调用哪些代码..

正如CodeCaster在评论中提出的那样。