我有一个应用程序,我使用编译器开关来控制是否包含大块代码。认为自动变速器或手动变速器的汽车。 在调试模式下工作正常,但在释放模式下,它看起来像自动变速箱和手动变速箱都编译,所以车不太好驱动...发布模式下的C#编译器开关
所以我错了试图获得选项控制功能编译器开关?
更多详细信息: 我对编译器开关的理解是有缺陷的。在下面的评论
简单的项目。(不太擅长驾驶的StackOverflow)
继续上面的类比,将(WinForm的)项目是用手动变速器建。它使用安装项目以调试模式部署。 (错误)。
几年后,自动传输是必需的。 (没有产生基类的共同点)。 思想是有一天手动传输可能需要再次)
看起来像编译器开关是一个好主意,以决定使用哪个代码块。 自动传输版本再次以调试模式部署。
经过多年的磨合,我决定应该发布它。那是当我注意到这个问题时。
请求的简单示例(谢谢)告诉我,它不是两个正在编译的块,而是#else中的块。即释放构建将开关视为关闭。
所以除非我错过了一些答案是不言而喻的。不要将编译器开关用于部署选项。
很难理解你在说什么 - 你能发表一些简短的代码示例来说明这一点吗? – Oded 2013-04-07 20:36:06
嗯,所以你基本上失去了#ifdefs的轨道?那么你使用的太多了。 – 2013-04-07 20:37:42
简单示例显示在发布版本中编译器开关被忽略。我原来的帖子里写错了。所以除非我误解。不要为项目选项使用编译器开关。 public partial class Form1:Form { public Form1() { InitializeComponent(); Display(); } 私人无效显示() { 的#if(是myswitch) 的MessageBox。显示(“MySwitch on”); #else MessageBox.Show(“MySwitch off”); #endif } – 2013-04-09 00:06:54