当C#编译器找到一条预处理指令#if,最后找到一条指令时,#endif仅在定义了指定符号的情况下,编译器才会在这些指令之间编译代码。与C和C ++不同,您不能将数字值分配给符号。#if C#中的语句为布尔型,仅测试符号是否已定义。

条件编译(编译器会根据不同配置环境来执行):
#if DEBUG
Console.WriteLine("我是debug 模式!");
#elif RELEASE
Console.WriteLine("我是relsease 模式!");
#else
Console.WriteLine("我是自定义模式!");
#endif
Console.WriteLine("我是没有被任何预处理过得输出!");
当前解决方案编译环境为Debug
输出结果:
常用指令符:
举例:我们需要两个版本的代码,基础版、更多功能的企业版本。此时我们就可以通过自定义指令符来满足定制化功能。
也可以通过属性的方式来执行方法
VS站点-》右键-》属性-》生成-》常规
定义生效后,通过csproj工程文件我们可以看到有两条PropertyGroup对应不同的Condition
你还可以使用以下两个预处理程序指令定义可以折叠在大纲中的代码区域:
#region MyClass definition
public class MyClass
{
static void Main()
{
}
}
#endregion
参考链接
https://docs.microsoft.com/zh-cn/dotnet/csharp/language-reference/preprocessor-directives
https://blog.walterlv.com/post/how-to-define-preprocessor-symbols.html
https://www.cnblogs.com/woxihuadabai/p/8005892.html