繁体   English   中英

预处理指令不能在 C# 中放入 AND

[英]Preprocessor directive cannot be put in AND in C#

我需要将一些代码放在预处理器指令下。 此类指令可以在不同的项目中定义。

我的情况如下:

文件Constants.cs (在项目 Proj1Dll.csproj 中)

#define DEV
... rest of the code

文件Page1.cs (在项目 MainProj.csproj 中,它引用 Proj1Dll)

#define SHOW_BTN

...

#if (DEV && SHOW_BTN)
  public static void Foo()
  {
    Debug.WriteLine("Both DEV and SHOW_BTN directives are defined");
  }
#endif

这种配置不起作用,因为方法 Foo() 不是编译的一部分。

如果我改为检查#if (DEBUG && SHOW_BTN)一切都很好。

当它们在不同的项目中定义时,有没有办法处理这些指令?

假设您使用的是 Visual Studio,您可以 go 到 Project Properties,在 Build 选项卡下,您将看到“Conditional compilation symbols”

将您的 synbols 放在这里,它们将在项目范围内被识别。

在您的示例中,如果您想要多个 DEV,则只需输入 DEV,用分号分隔它们,例如 DEV;SHOW_BTN

如果您想要解决方案范围内的某些东西并且只需要一个符号,您可以使用配置管理器专门为此构建创建一个新配置并将其命名为您喜欢的名称 - 这会给您带来相同的效果。 (这就是为什么在您的示例中 DEBUG 有效)

希望有帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM