Visual Studio 2010 Express 中忽略了 C# 预处理器指令?

标签 c# c-preprocessor visual-studio-express

我从codeProject 下载了一段代码.

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

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

在下面的代码中,构建项目时显示错误找不到DShowNET。由于 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 是否需要明确“未定义”?还是我遗漏了其他一些基本概念?

最佳答案

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

所以,我发现,尽管 CaptureTest-2005 项目在构建页面上没有定义 DSHOWNET,但是 DirectX.Capture-2005 项目做到了。因此,对于 DirectX.Capture-2005 中的所有文件,DSHOWNET 指令评估为 true,因此 #if DSHOWNET 中的项目正在处理指令。

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

希望这对您有所帮助!

关于Visual Studio 2010 Express 中忽略了 C# 预处理器指令?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7061528/

相关文章:

c# - 绘图方 block /游戏板 c#

c - 在带有数字符号的 printf 中使用宏

c# - 如何在单独的文件夹中添加资源?

c++ - 如何解决visual c++中的 "unresolved external symbol"链接错误?

visual-studio-2010 - Nuget 与 Web 安装程序。它与 VS 2010 扩展有何关系

SELECT ip 上的 C# MySQL 参数 addwithvalue,estado FROM @table 不起作用

c# - 如何使用 Midi 点网类在 C# 中读取打击乐音符值

c - 预处理器宏如何工作?

C. 将 #predefined 参数列表传递给函数

c# - 从图像中获取点的坐标