Сборка релиза Asp.net против отладочной сборки - PullRequest
1 голос
/ 21 мая 2009

Как определить, было ли мое приложение скомпилировано как «release» вместо «debug»? Я пошел в VS 2008 Project Properties> Build и установил конфигурацию от Debug до Release, но я не заметил изменений? Это проект ASP.NET.

Ответы [ 4 ]

4 голосов
/ 21 мая 2009
3 голосов
/ 21 мая 2009

Если вы хотите знать, была ли dll построена в режиме отладки с атрибутами отладки, тогда вам лучше всего задуматься.

Взято из " Как узнать, отлажена или выпущена существующая сборка ":

Assembly assembly = Assembly.GetAssembly(GetType());
bool debug = false;
foreach (var attribute in assembly.GetCustomAttributes(false)){
  if (attribute.GetType() ==  typeof(System.Diagnostics.DebuggableAttribute)){
    if (((System.Diagnostics.DebuggableAttribute)attribute)
        .IsJITTrackingEnabled){
      debug = true;
      break;
    }
  }
}

Это позволит получить сборку, которая вызывает этот код (в действительности сам), а затем установить для логического значения отладки значение true, если сборка была скомпилирована в режиме отладки, в противном случае это false.

Это можно легко перенести в консольное приложение (как в связанном примере), а затем вы передадите путь к dll / exe, который вы хотите проверить. Вы бы загрузили сборку с пути, подобного этому:

Assembly assembly = 
    Assembly.LoadFile(System.IO.Path.GetFullPath(m_DllPath.Text));
1 голос
/ 21 мая 2009

Для одного в Web.config отладке будет присвоено значение true, однако вы также можете установить это в приложении выпуска.

В отладке, однако, определены как DEBUG, так что это легко сделать:

bool is_debug;

#ifdef DEBUG
is_debug = true;
#else
is_debug = false;
#endif
0 голосов
/ 21 июня 2012

Вам нужно искать больше, чем IsJITTrackingEnabled - который полностью независим от того, скомпилирован ли код для оптимизации и оптимизации JIT.

Кроме того, атрибут DebuggableAttribute присутствует, если вы компилируете в режиме Release и выбираете DebugOutput для чего-либо, кроме «none».

Пожалуйста, обратитесь к моим сообщениям: Как узнать, отладка или выпуск сборки и Как определить, является ли DLL отладочной или выпускной сборкой (в .NET)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...