2008-09-08 70 views
7

所以我有大約10個簡短的css文件,我用mvc應用程序。 有像 error.css login.css etc ... 只是一些非常簡短的css文件,使更新和編輯容易(至少對我來說)。我想要的是能夠優化if else分支並且不將它併入最終位的內容。我想要做這樣的事情從調試版本中檢測發佈版本的最佳方法? .net

if(Debug.Mode){ 

<link rel="stylesheet" type="text/css" href="error.css" /> 
<link rel="stylesheet" type="text/css" href="login.css" /> 
<link rel="stylesheet" type="text/css" href="menu.css" /> 
<link rel="stylesheet" type="text/css" href="page.css" /> 
} else { 
<link rel="stylesheet" type="text/css" href="site.css" /> 
} 

我有一個MSBuild任務,將結合所有的CSS文件,儘量減少他們和所有的好東西。我只需要知道是否有辦法刪除最後一位中的if else分支。

+0

同類者問題在#1,一個問題,和很多很多不同的答案: http://stackoverflow.com/questions/654450/programatically-detecting-release-debug-mode-net http://stackoverflow.com/questions/798971/how-to-idenfiy-if-the-dll-is-debug-or-release-build-in-net http://stackoverflow.com/questions/194616/how-to-tell-if-net-app-was-compiled-in-debug-or-release-mode http://stackoverflow.com/questions/50900/best-way-to-detect- a-release-build-from-a-debug-build-net http://stackoverflow.com/questions/890459/asp-net-release-build-vs-debug-build – Kiquenet 2011-02-03 19:51:18

+0

請參閱我的帖子: [如何判斷程序集是調試還是發佈](http: //dave-black.blogspot.com/2011/12/how-to-tell-if-assembly-is-debug-or.html)和 [http://stackoverflow.com/questions/798971/how-to -idenfiy-如果最DLL-是調試 - 或釋放積聚在網/ 5316565#5316565](http://stackoverflow.com/questions/798971/how-to-idenfiy-if-the- dll-is-debug-or-release-build-in-net/5316565) – 2012-06-21 13:39:17

回答

27

具體來說,像這樣在C#:

#if (DEBUG) 
    Debug Stuff 
#endif 

C#有以下預處理器指令:

#if 
#else 
#elif // Else If 
#endif 
#define 
#undef // Undefine 
#warning // Causes the preprocessor to fire warning 
#error // Causes the preprocessor to fire a fatal error 
#line // Lets the preprocessor know where this source line came from 
#region // Codefolding 
#endregion 
5

我應該使用谷歌。

#if DEBUG 
    Console.WriteLine("Debug mode.") 
#else 
    Console.WriteLine("Release mode.") 
#endif 

確保選擇「配置設置」 - >「建立」,「在項目屬性定義DEBUG 常數」被選中。

1

編譯器常量。我不記得了C#語法,但是這是我如何做到這一點在VB:

#If CONFIG = "Debug" Then 
    'do somtehing 
#Else 
    'do something else 
#EndIf 
7
if (System.Diagnostics.Debugger.IsAttached) 
    { 
      // Do this 
    } 
    else 
    { 
      // Do that 
    } 
+5

這告訴你(在運行時)是否連接了調試器,但是如果程序集是DEBUG(vs RELEASE)構建,則不會。 – AlfredBr 2012-10-24 17:17:37

4

你可以嘗試使用

HttpContext.Current.IsDebuggingEnabled 

它由配置中的節點控制。在我看來,這是比條件編譯更好的解決方案。

但是,如果你想能夠基於compilatino控制,我認爲你可以使用ConditionalAttribute

問候,

相關問題