【问题标题】:How to define a constant globally in C# (like DEBUG)如何在 C# 中全局定义一个常量(如 DEBUG)
【发布时间】:2009-01-12 18:07:29
【问题描述】:

我想根据#define定义的一个常量,以不同的方式编译一个项目,像这样:

#define USE_COMPONENT_X

#if USE_COMPONENT_X
...

#endif

我可以在 C# 中做到这一点。但是当我转到同一个项目中的另一个文件时,没有定义这个常量。我可以以某种方式为所有项目定义一个常量,比如 DEBUG 是这样定义的吗?

【问题讨论】:

    标签: c# .net


    【解决方案1】:

    您可以添加 /define 编译器开关。

    1. 打开项目的“属性页”对话框。
    2. 单击配置属性文件夹。
    3. 单击“构建”属性页。
    4. 修改条件编译常量属性。

    【讨论】:

    • 也可以直接编辑csproj文件,查找属性:DefineConstants。
    • 你能举个例子吗?我收到“编译器的参数无效,'...' 将被忽略。”错误。
    • 太棒了!使用分隔符分号“;”似乎也支持多个宏。
    【解决方案2】:

    您可能希望更进一步,创建不同的项目配置作为标准调试和发布项目配置的变体。构建菜单下的配置管理器将让您完成此操作。然后,当您在项目属性的“构建”选项卡中时,您可以选择各种配置并设置适合每个配置的条件编译常量。当您想要在条件编译代码的各种排列之间来回交换时,这将为您节省大量时间。

    【讨论】:

      【解决方案3】:

      希望我没有偏离主题,而是可能为常量类型定义一个接口,然后使用众多依赖注入框架之一来管理“常量”的定义、注入和生命周期,而不是“常量” .

      【讨论】:

      • 你能详细解释一下吗?
      • 这听起来像是您在运行时而不是在编译时(作者正在谈论)期间更改应用程序的过程。如果设置了 /define 常量,则代码不应包含在生成的程序集中。
      【解决方案4】:

      在您的 IDE 中设置它或使用编译器命令行开关,即 -define 用于 Mono。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-03-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多