Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/295.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在C#中全局定义常量(如调试)_C#_.net - Fatal编程技术网

如何在C#中全局定义常量(如调试)

如何在C#中全局定义常量(如调试),c#,.net,C#,.net,我想根据#define定义的常量以不同的方式编译项目,如下所示: #define USE_COMPONENT_X #if USE_COMPONENT_X ... #endif 我可以用C#来做。但是当我转到同一项目中的另一个文件时,这个常量没有定义。我是否可以以某种方式为所有项目定义一个常量,就像DEBUG是这样定义的?您可以添加/define编译器开关 打开项目的“属性页”对话框 单击配置属性文件夹 单击生成属性页 修改条件编译常量属性 在IDE中设置它,或者使用编译器命令行开关,例如M

我想根据#define定义的常量以不同的方式编译项目,如下所示:

#define USE_COMPONENT_X

#if USE_COMPONENT_X
...

#endif

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

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

  • 打开项目的“属性页”对话框
  • 单击配置属性文件夹
  • 单击生成属性页
  • 修改条件编译常量属性

  • 在IDE中设置它,或者使用编译器命令行开关,例如Mono。

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

    您可能需要更进一步,创建不同的项目配置,作为标准调试和发布项目配置的变体。build菜单下的Configuration Manager将允许您完成此操作。然后,在“项目属性”的“生成”选项卡中,可以选择各种配置,并设置适用于每个配置的条件编译常量。当您想在有条件编译的代码的各种排列之间来回切换时,这将节省大量时间。

    您能详细解释一下吗?这听起来像是在运行时而不是在编译时(作者正在谈论的)更改应用程序的过程。如果设置了/define常量,则代码不应包含在生成的程序集中。您也可以直接编辑csproj文件,查找property:DefineConstants。是否可以包括用法示例?我得到“编译器的参数无效,…”将被忽略。错误。太好了!似乎多个宏也支持使用分隔符分号“;”。