我有一個應用程序,我使用編譯器開關來控制是否包含大塊代碼。認爲自動變速器或手動變速器的汽車。 在調試模式下工作正常,但在釋放模式下,它看起來像自動變速箱和手動變速箱都編譯,所以車不太好驅動...發佈模式下的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