裏面的代碼我只在調試模式下發布測試我的本地機器,我希望'#if調試'模式將工作,以便我可以測試功能,我不想在生產中。發佈在調試模式,但編譯器刪除#if調試
當我在調試模式下發布的web.config中仍具有
<system.web>
<compilation debug="true" targetFramework="4.0">
</system.web>
但是當我使用反射器對項目的DLL,它是這樣
#if debug
PlaceHolder1.Visible = true;
#endif
代碼是不存在的。我認爲編譯器已經刪除它。
注:我不是在談論構建,我正在談論發佈。做一個調試版本的工作,因爲我期望它與上面的代碼仍然存在
這是預期的行爲?當我以調試模式發佈時,是否有辦法讓編譯器包含這些代碼段?我是否全部錯了?
更新: 爲了響應@ Dash的評論我的封裝/發佈站點設置爲:
如果我使用'if#DEBUG',而不是'if#debug',那麼一定要在項目屬性中檢查'Package/Publish Web'設置以確保'Debug'是發佈時的活動構建配置。 – dash
你的Build屬性頁面是什麼樣的?你有'定義DEBUG常數'打勾?如果我在Package/Publish Web頁面中設置了Debug,並且在Build選項卡上勾選了該選項,然後進行發佈,則適用於我,您可以使用ILSpy(http://ilspy.net/)檢查以確保你期待的代碼已經包含在內。 – dash
@dash是定義DEBUG常量被打勾,但它不適用於我。我一直在使用http://www.reflector.net/來檢查發佈後的編譯代碼,但感謝關於ILSpy的提示,我之前沒有聽說過。爲了防止這種情況出現 – Dean