在解决方案属性中,我将Configuration设置为"release",用于我唯一的项目.
在主程序的开头,我有这个代码,它显示"Mode = Debug".我也在最顶端有这两行:
#define DEBUG
#define RELEASE
Run Code Online (Sandbox Code Playgroud)
我在测试正确的变量吗?
#if (DEBUG)
Console.WriteLine("Mode=Debug");
#elif (RELEASE)
Console.WriteLine("Mode=Release");
#endif
Run Code Online (Sandbox Code Playgroud)
我的目标是根据调试版本和发布模式为变量设置不同的默认值.
在C/C++中,您可以在代码中定义宏,如下所示:
#define OLD_WAY 1
Run Code Online (Sandbox Code Playgroud)
虽然我从来没有这样做过,但我认为C#中可以使用同样的东西.更重要的是,在C/C++中,可以通过执行以下操作来执行某些条件编译逻辑:
#if OLD_WAY == 1
int i = 0;
#else
int i = 1;
#endif
Run Code Online (Sandbox Code Playgroud)
好的,所以这一切都很酷.而且,我认为这种逻辑在C#中是可能的.我想知道的是,我如何在项目级别定义常量,以便我可以输入逻辑,如果我定义常量的一个方法或另一个代码块,我将允许我条件编译一个代码块如果我不这样定义?我假设它已经在项目的属性中的某个地方完成,但我如何定义它?
可能重复:
#ifff在#define中
如何在宏内成功使用"#"字符?当我做那样的事情时,它会尖叫:
#define DO(WHAT) \
#ifdef DEBUG \
MyObj->WHAT() \
#endif \
Run Code Online (Sandbox Code Playgroud) 我正在使用Visual c#Express 2008.我想在"Release"版本中执行一个特殊的命令 - 在我创建和运行Debug版本时不应该执行此命令.是否可以根据我的构建类型(Debug或.Release)实现代码?
例如:
if(??buildtype?? == "Release")
{
//... special command ...
MessageBox.Show("RELEASE version");
}
else
{
//... normal command ...
MessageBox.Show("debug release");
}
Run Code Online (Sandbox Code Playgroud)