C#中的#include(条件编译)

时间:2010-04-23 00:02:35

标签: c# c-preprocessor

在C#中是否可以设置这样的条件:如果条件为真 - 编译一个文件;如果condition为false - 编译另一个文件?

有点像

#ifdef DEBUG
#include Class1.cs
#else
#include Class2.cs
#endif

或者可能在项目属性中设置它。

4 个答案:

答案 0 :(得分:6)

不,不是。

但是,您可以将整个文件包装在#if块中。

您可能还想查看[Conditional] attribute

答案 1 :(得分:2)

我不推荐它。我不喜欢Debug和Release的想法有这么完全不同的代码,你需要有两个完全独立的文件来理解差异。 #if DEBUG at all 是一个非常大的代码味道IMO ...

但是,你可以这样做:

// Class1.cs
#if DEBUG

...

#endif

// Class2.cs
#if !DEBUG

...

#endif

答案 2 :(得分:1)

在C#中,我们不使用文件的包含,但您可以使用条件方法。

例如,如果我正在开发一个游戏,我正在为我的输入类使用共享代码库,但是如果我在Xbox上,我想要调用一个方法,如果我有一个不同的方法被调用我在Zune。它仍将返回相同类别的输入数据,但它将采用截然不同的路径来获取它。

您可以在此处详细了解条件方法: http://msdn.microsoft.com/en-us/library/aa288458(v=VS.71).aspx

答案 3 :(得分:0)

值得庆幸的是,不是那样的预处理器。但是,您可以在文件本身中排除整个文件的实现。或者,您可以使用MSBuild或nAnt设置构建过程以切换我们的文件。