可以在代码文件之外使用预处理程序指令吗?

时间:2013-12-12 14:11:41

标签: c# visual-studio c-preprocessor

C# preprocessor directives 可以在代码文件以外的地方使用吗?

我知道如何在代码文件中使用它们,这是MSDN-Pages中的示例:

// preprocessor_if.cs
#define DEBUG
#define MYTEST
using System;
public class MyClass 
{
    static void Main() 
    {
#if (DEBUG && !MYTEST)
        Console.WriteLine("DEBUG is defined");
#elif (!DEBUG && MYTEST)
        Console.WriteLine("MYTEST is defined");
#elif (DEBUG && MYTEST)
        Console.WriteLine("DEBUG and MYTEST are defined");
#else
        Console.WriteLine("DEBUG and MYTEST are not defined");
#endif
    }
}

是否可以在XML(或其他非代码)文件中使用#if来为调试和发布提供不同的数据?例如:

<coustomXml>
#if DEBUG
    <item>debugdata</item>
#else
    <item>releaseData</item>
#endif
</coustomXml>

我用我项目的app.config尝试了这个,但编译器忽略了这些标志。

1 个答案:

答案 0 :(得分:2)

不可能使用编译器指令,但您可以根据构建类型使用config transofrmations:

http://www.hanselman.com/blog/SlowCheetahWebconfigTransformationSyntaxNowGeneralizedForAnyXMLConfigurationFile.aspx