2008-09-08 21 views
7

Mam więc około 10 krótkich plików css, których używam z aplikacją mvc. Są takie jak error.css login.css itp. itd. Po prostu kilka naprawdę krótkich plików css, które ułatwiają aktualizację i edycję (przynajmniej dla mnie). To, czego chcę, to coś, co zoptymalizuje gałąź if if i nie włączy jej do końcowych bitów. Chcę zrobić coś takiegoNajlepszy sposób na wykrycie kompilacji wydania z kompilacji debugowania? .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" /> 
} 

będę miał zadanie MSBuild, która będzie łączyć wszystkie pliki CSS, ogranicza je i wszystkie dobre rzeczy. Po prostu muszę wiedzieć, czy istnieje sposób na usunięcie gałęzi if if w końcowych bitach.

+0

podobieństw pytania w Stackoverflow, jedno pytanie i wiele, wiele różnych odpowiedzi: 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

+0

Proszę odnieść się do moich wypowiedzi: [Jak sprawdzić, czy zespół jest Debug lub Release] (http: //dave-black.blogspot.com/2011/12/how-to-tell-if-assembly-is-debug-or.html) i [http://stackoverflow.com/questions/798971/how-to -idenfiy-if-the-dll-is-debug-or-release-build-in-net/5316565 # 5316565] (http://stackoverflow.com/questions/798971/how-to-idenfiy-if-the- dll-is-debug-or-release-build-in-net/5316565 # 5316565) –

Odpowiedz

27

W szczególności, jak to w C#:

#if (DEBUG) 
    Debug Stuff 
#endif 

C# posiada następujące dyrektywy preprocesora:

#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

Powinienem użyć Google.

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

Upewnij się, że opcja „Ustawienia konfiguracji” -> „Build” „Określ DEBUG stałą” we właściwościach projektu jest zaznaczone.

1

Stałe kompilatora. Nie pamiętam składni C#, ale jest to w jaki sposób mogę to zrobić w VB:

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

To powie Ci (w czasie wykonywania), czy debugger jest podłączony, ale nie, jeśli zestaw jest DEBUG (vs RELEASE) kompilacji. – AlfredBr

4

można spróbować użyć

HttpContext.Current.IsDebuggingEnabled 

jest kontrolowany przez węzeł w konfiguracji. Moim zdaniem jest to lepsze rozwiązanie niż kompilacja warunkowa.

Jeśli jednak chcesz mieć możliwość sterowania w oparciu o kompilator, myślę, że możesz użyć ConditionalAttribute.

Pozdrawiam,

+1

To oczywiście działa tylko dla aplikacji ASP.NET. –

Powiązane problemy