C# 使用预处理器检查应用程序是否为winforms或asp.net

C# 使用预处理器检查应用程序是否为winforms或asp.net,c#,c-preprocessor,C#,C Preprocessor,是否可以签入正在运行程序集的客户端(winforms app或asp.net页)? 我想添加一些方法,但只针对特定的客户端 我知道,有预定义的调试(#if DEBUG)。在哪里可以找到完整的列表,我可以使用预处理器检查什么?您需要多个构建配置,并为每个配置定义不同的预处理器指令。您可以在“项目属性”页的“生成”选项卡中设置条件预处理器指令。没有定义其他指令,只有调试指令,您可以在同一选项卡中打开和关闭该指令(与跟踪指令一起)。请注意,“发布”生成配置没有定义调试。这是您需要做的事情,以便能够构建

是否可以签入正在运行程序集的客户端(winforms app或asp.net页)? 我想添加一些方法,但只针对特定的客户端


我知道,有预定义的调试(#if DEBUG)。在哪里可以找到完整的列表,我可以使用预处理器检查什么?

您需要多个构建配置,并为每个配置定义不同的预处理器指令。您可以在“项目属性”页的“生成”选项卡中设置条件预处理器指令。没有定义其他指令,只有调试指令,您可以在同一选项卡中打开和关闭该指令(与跟踪指令一起)。请注意,“发布”生成配置没有定义调试。这是您需要做的事情,以便能够构建不同版本的程序集

参考资料:


  • 要扩展m0sa的答案,预处理器指令基本上只是传递给编译器的字符串

    如果您愿意,可以添加新的构建配置(例如:不使用Debug/AnyCPU和Release/AnyCPU,而使用WebDebug/AnyCPU、WinformsDebug/AnyCPU、WebRelease/AnyCPU等)

    然后在项目的属性页中,可以为每个配置在“条件编译符号”字段中提供一个值。例如,对于WebDebug和WebRelease,可以提供条件符号WEB。然后,您将能够使用:

    #if WEB
    using MyNamespace.WebStuff;
    #endif