2010-10-07 17 views
5

Mam odwołuje bibliotekę, w środku nie chcę, aby wykonać inną czynność, jeśli zespół odwołujący go w trybie debugowania/release.Jak sprawdzić, czy zespół jest wywołanie w trybie debugowania z skompilowany odwołuje lib

Czy można włączyć warunek, że zestaw wywołujący jest w trybie DEBUG/RELEASE?

Czy istnieje sposób to zrobić bez uciekania się do czegoś podobnego.

bool debug = false; 

#if DEBUG 
debug = true; 
#endif 

referencedlib.someclass.debug = debug; 

Zespół odsyłania zawsze będzie punktem wyjścia aplikacji (czyli aplikacja internetowa

Odpowiedz

8

Google says jest bardzo prosta . Otrzymasz informację z DebuggableAttribute zespołu w pytaniu:

IsAssemblyDebugBuild(Assembly.GetCallingAssembly()); 

private bool IsAssemblyDebugBuild(Assembly assembly) 
{ 
    foreach (var attribute in assembly.GetCustomAttributes(false)) 
    { 
     var debuggableAttribute = attribute as DebuggableAttribute; 
     if(debuggableAttribute != null) 
     { 
      return debuggableAttribute.IsJITTrackingEnabled; 
     } 
    } 
    return false; 
} 
+0

Przepraszamy za ból, ale "Google" nic nie mówi. To przyniesie mi trochę przykładów, bo-jestem-zbyt-leniwym narzędziem. : D – Nayan

+1

nie jestem zbyt leniwy! Wydaje mi się, że dzisiaj mam słabe google-fu :( –

+0

@Nayan Google mówi: nie! – bitbonk

1

można użyć reflection, aby uzyskać zestaw wywołujący i użyć this method, aby sprawdzić, czy jest on w trybie debugowania.

0

Przyjęta odpowiedź jest prawidłowa. Oto alternatywna wersja, która pomija etap iteracji i jest udostępniana jako metoda rozszerzenia:

public static class AssemblyExtensions 
{ 
    public static bool IsDebugBuild(this Assembly assembly) 
    { 
     if (assembly == null) 
     { 
      throw new ArgumentNullException(nameof(assembly)); 
     } 

     return assembly.GetCustomAttribute<DebuggableAttribute>()?.IsJITTrackingEnabled ?? false; 
    } 
} 
Powiązane problemy