Суть вашего вопроса заключается в разнице между компиляцией в режимах отладки / выпуска Visual Studio и флагом отладки Web.config.
Я постараюсь объяснить вам обоим.
СначалаВ общем, вы должны узнать , как компилируется приложение ASP.NET, иначе вы не поймете разницу между двумя компиляциями.
Приложение ASP.NET созданоразметка (т. е. страницы ASPX, элементы управления .ascx, файлы маркеров .ashx .asmx) и code-behind .Кодовым компонентом, с точки зрения вашей IDE (независимо от Visual Studio, MonoDevelop и т. Д.), Является .NET Class Library , т.е.набор классов, которые ничего не делают в одиночку.Они могут быть скомпилированы в режим отладки или выпуска безразлично путем настройки IDE.Если вы скомпилируете в режиме Release, то вызовы класса Debug
будут игнорироваться.
А как насчет разметки?Когда вы запускаете веб-приложение, файлы разметки компилируются сервером приложений для получения окончательных сборок.Например, страница Default.aspx
с файлом с выделенным кодом компилируется в конечный класс, который наследует класс с выделенным кодом и записывает в HTTP-вывод все его статические части, а также все элементы управления, созданные вбазовый класс в позициях, которые были выбраны во время проектирования.Встроенный код (т. Е. <script runat=server>
теги) тоже компилируется.Чтобы выбрать режим компиляции, используется флаг отладки в Web.config, потому что вы не можете точно определить, была ли сборка скомпилирована в режиме отладки или выпуска, просто размышляя об этом (хотя могут быть некоторые эмпирические критерии).
В двух словах
- Когда вы вызываете класс
Debug
из кода, убедитесь, что ваша IDE компилирует сайт в режиме отладки - Когда вы вызываете класс
Debug
из встроенного кода в разметке, убедитесь, что у вас установлен флаг отладки Web.config - Если вы развертываете свое приложение как исходный код (это не работает для меня в Mono, я долженfirst
xbuild
it), я не уверен, но я верю, что флаг отладки будет использоваться и для первого этапа компиляции
Надеюсь, я вам помог!