我可以使用C#预处理器跳过Kinect v2.0代码吗?

我可以使用C#预处理器跳过Kinect v2.0代码吗?,c#,c-preprocessor,kinect,kinect-sdk,windowsversion,C#,C Preprocessor,Kinect,Kinect Sdk,Windowsversion,快速提问,我正在开发一个小程序,我想使用Kinect版本1和2。如果我没有安装Kinect 2.0 sdk,是否可以使用预处理器命令使c#编译器跳过我的Kinect v2.0代码?(例如,当我在Windows 7上工作时)。基本上是这样的: #if KINECT1 // ... kinect1 specifict code #endif #if KINECT2 // ... kinect2 specific code #endif 当然,您必须定义这些符号,编译器或框架中没有内置

快速提问,我正在开发一个小程序,我想使用Kinect版本1和2。如果我没有安装Kinect 2.0 sdk,是否可以使用预处理器命令使c#编译器跳过我的Kinect v2.0代码?(例如,当我在Windows 7上工作时)。

基本上是这样的:

#if KINECT1
   // ... kinect1 specifict code
#endif

#if KINECT2
   // ... kinect2 specific code
#endif
当然,您必须定义这些符号,编译器或框架中没有内置功能来检测哪个版本可用(如果有的话)

通过使用MSBuild,您可能能够检测到任何已安装的Kinect SDK(版本)。例如,查找本地驱动器上的特定注册表项、路径和/或设置环境变量,然后从项目文件中设置这些符号

例如,在
.csproj
文件的顶部包含以下片段(或将其放入一个单独的文件中)

基本上是这样的:

#if KINECT1
   // ... kinect1 specifict code
#endif

#if KINECT2
   // ... kinect2 specific code
#endif
当然,您必须定义这些符号,编译器或框架中没有内置功能来检测哪个版本可用(如果有的话)

通过使用MSBuild,您可能能够检测到任何已安装的Kinect SDK(版本)。例如,查找本地驱动器上的特定注册表项、路径和/或设置环境变量,然后从项目文件中设置这些符号

例如,在
.csproj
文件的顶部包含以下片段(或将其放入一个单独的文件中)


作为实施MSBuild解决方案的人员的参考:SDK确实创建了环境变量
KINECTSDK_DIR
(请参阅的“此版本中的更改”部分),路径类似于
C:\Program Files\Microsoft SDK\Kinect\v1.0 Beta2
,应该允许您解析版本。哦,冷却设置
KINECTSDK20\u DIR
。我无法在我所在的机器上安装SDK,因此无法进行检查。感谢这些家伙,我已经成功地让它工作了,不过需要注意的是,除非我在所有现有propertygroup下面和第一个item group上面添加propertygroup定义,否则这对我不起作用。我不确定这是否是因为标准csproj文件在定义调试、跟踪等时清除了现有常量,以供实施MSBuild解决方案的人员参考:SDK确实创建了环境变量
KINECTSDK_DIR
(请参阅本版本中的“更改”部分),路径类似于
C:\Program Files\Microsoft SDK\Kinect\v1.0 Beta2
,应该允许您解析版本。噢,酷,它设置
Kinect SDK20\u DIR
。我无法在我所在的机器上安装SDK,因此无法进行检查。感谢这些家伙,我已经成功地让它工作了,不过需要注意的是,除非我在所有现有propertygroup下面和第一个item group上面添加propertygroup定义,否则这对我不起作用。我不确定这是否是因为标准csproj文件在定义调试、跟踪等时会清除现有常量。
 <PropertyGroup Condition="'$(KINECTSDK10_DIR)' != '' and Exists('$(KINECTSDK10_DIR)')">
     <DefineConstants>KINECT1;$(DefineConstants)</DefineConstants>
 </PropertyGroup>
 <PropertyGroup Condition="'$(KINECTSDK20_DIR)' != '' and Exists('$(KINECTSDK20_DIR)')">
     <DefineConstants>KINECT2;$(DefineConstants)</DefineConstants>
 </PropertyGroup>