c#预处理器指令在visual Studio 2010 Express中被忽略

本文关键字:Express 2010 Studio 处理器 预处理 指令 visual | 更新日期: 2023-09-27 18:05:48

我有一段从codeProject下载的代码。

#if预处理器指令似乎不像我期望的那样工作。

我还没有在MyProject中定义DSHOWNET>>属性>>构建选项卡>>条件编译符号(对话框为空)

在下面的代码中,在构建项目时显示错误DShowNET could not be found。由于DSHOWNET从未定义过,所以我对"使用DSHOWNET"甚至被处理感到惊讶。

using System;
using System.Collections;
using System.Runtime.InteropServices;
#if DSHOWNET
using DShowNET;
using DShowNET.Device;
#else
#if VS2003
#else
using System.Runtime.InteropServices.ComTypes;
#endif
using DirectShowLib;
#endif

#if预处理器指令在Visual Studio Express版本中工作吗?DSHOWNET需要显式地"未定义"吗?还是我遗漏了什么基本概念?

c#预处理器指令在visual Studio 2010 Express中被忽略

我下载了示例抓取器项目并将其放在我的系统上。(我使用的是Enterprise VS.)我打开CaptureTest-2005解决方案,将其转换为VS2010解决方案,并加载它。在加载CaptureTest-2005解决方案后,我仍然看到文件具有与您所看到的相同的问题。

所以,我发现的是,虽然CaptureTest-2005项目没有在Build页面上定义DSHOWNET,但DirectX.Capture-2005项目有。因此,对于DirectX.Capture-2005中的所有文件,DSHOWNET指令求值为true,因此#if DSHOWNET指令中的项被处理。

我不确定解决方案是否只需要您构建和使用CodeProject下载的DSHOWNET部分,(例如,我不确定DirectX.Capture是否需要),但我想,由于DirectX.Capture项目定义了它,您将不得不构建和使用该程序集来运行项目。(也许有一种方法,我还没有深入研究。我建议检查一下项目页面,看看是否有关于什么依赖于什么的信息。

希望这对你有帮助!