在C#中是否可以设置这样的条件:如果条件为真 - 编译一个文件;如果condition为false - 编译另一个文件?
有点像
#ifdef DEBUG
#include Class1.cs
#else
#include Class2.cs
#endif
或者可能在项目属性中设置它。
答案 0 :(得分:6)
答案 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设置构建过程以切换我们的文件。