Visual Studio中Debug與Release編譯模式的區別以及Preprocesor directives的使用

來源:互聯網
上載者:User

在Visual Studio中,最基礎的編譯模式有2中,Debug與Release.這也是預設的兩種方式,在建立一個project的時候,這兩種模式就已經存在。



我們也可以點擊那個Configuration Manager按鈕,去自己建立一個新的編譯模式。在建立這個編譯模式的時候,會問你是否要繼承自現在已有的某個,可以選擇Debug或者Release,也可以什麼都不選,這個繼承指的是一些編譯的方式,比如說是否要最佳化代碼什麼的。


那麼Debug與Release編譯模式到底有著什麼樣的區別。我們可以到Project的屬性中查看。在Build選項卡,我們可以看到Debug模式的具體的內容。最主要的是那個Optimize code選項沒有勾選,這樣就沒有壓縮dll,也就是說這裡還是含有一個調試資訊的,可以對程式進行調試。如果選擇了Release模式,預設是勾選了這個選項,就會對dll進行壓縮,這樣之後的dll會變得很小,但是就不能調試了。(當然也可以把Release模式下的壓縮dll選項取消,這樣做可以,但是沒有任何意義了,因為Release模式本應該就是要壓縮的,幹嘛把預設的取消,非要逆著正常人思維做事。)

 


 

看上邊這個選項頁,還有就是定義了DEBUG與TRACE的常量,這個常量是給Preprocessor使用的,也就是在VS中常見的#開頭的那些東西。這裡是定義了DEBUG這個常量,那麼在Debug模式下編譯這個程式,也就是說在Start那個框後邊選擇了Debug之後,下邊的這句Console.WriteLine才會被編譯到dll中,才會被CLR執行。如果是Release模式,就不會被編譯與執行。

 

#ifDEBUG
    Console.WriteLine("Debugversion");
#endif

 

這是MSDN中所有的Preprocessor的列表:https://msdn.microsoft.com/en-us/library/ed8yd1ha.aspx

 

如果是一個Website的項目,在項目publish的時候,也會涉及到Debug,Release,或者其他自訂的模式,比如說DeployToQA(繼承自Release),因為建立VS的一鍵部署的時候,需要選擇一種模式,這樣VS才知道把哪種編譯的dll放到server上邊。

 

而且,VS最新推出了一種Web.config的transform文法方式,你選擇了何種編譯模式,就要到Web.config的同一目錄下邊,找到Web.DeliveryInDev.config檔案,然後用相應的文法來編寫這個檔案,大致意思就是,以Web.config為模板,不過替換其中一些節點的內容,比如說,把database改為QA的資料庫的地址等。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.