Мое использование команды log4net от Apache. Это довольно легко и легко установить. Лучший из всех, это абсолютно настраивается из web.config файла, поэтому как только у Вас есть рычаги в Вашей установке кода, можно полностью измениться, способ регистрироваться сделан только путем изменения web.config файла.
поддержки log4net, регистрирующиеся к большому разнообразию местоположений - база данных, электронная почта, текстовый файл, журнал событий Windows, и т.д. Моей команде настроили его, чтобы отправить подробную информацию об ошибке в базу данных, и также послать электронное письмо всей команде с достаточной информацией для нас для определения в который часть кода порожденная ошибка. Тогда мы знаем, кто ответственен за ту часть кода, и они могут перейти к базе данных для получения более подробной информации.
Интересная разница здесь - использование #if Debug на странице ASPX вытаскивает из тега в Web.config, но когда вы используете его в кодовом режиме, он вытягивает отладку из константы от Конфигурация сборки в файле проекта. Поэтому они на самом деле доступа к двум различным настройкам.
Таким образом, насколько я могу сказать, это на самом деле не возможно.
Я попробовал ваш код, и он отлично сработал. Я включил или отключил DEBUG в разделе system.web / compilation в web.config, запущенном как веб-сайт (не тестировался как веб-приложение; может быть другим ...).
Чтобы увидеть, что делает этот код , поместите на страницу намеренную синтаксическую ошибку и попробуйте запустить ее с включенным режимом отладки. Компилятор сгенерирует ссылку на странице ошибки, которая позволит вам просмотреть источник.
Подсказка: директивы препроцессора вставляются в вывод.
Line 218: #if DEBUG
Line 219:
Line 220: #line default
Line 221: #line hidden
Line 222: @__w.Write("\r\n<script type=\"text/javascript\" src=\"resources/jquery-1.3.2.js\" />\r\n");
Line 223:
Line 224: #line 14 "F:\Test\test.aspx"
Line 225: #else
Line 226:
Line 227: #line default
Line 228: #line hidden
Line 229: @__w.Write("\r\n<script type=\"text/javascript\" src=\"resources/jquery-1.3.2.min.js\" />\r\n");
Line 230:
Line 231: #line 16 "F:\Test\test.aspx"
Line 232: #endif
Конечно, есть и другие. (лучше) способы делать то, что вам нужно ...
Лучшим подходом может быть использование кода на стороне сервера для включения сценария. Я бы использовал что-то вроде
protected void Page_Load(object sender, EventArgs e)
{
#if DEBUG
ScriptManager.RegisterClientScriptInclude(this, this.GetType(), "JQueryScript", "resources/jquery-1.3.2.js");
#else
ScriptManager.RegisterClientScriptInclude(this, this.GetType(), "JQueryScript", "resources/jquery-1.3.2.min.js");
#endif
}
К сожалению, я не думаю, что у вас могут быть директивы препроцессора в aspx.
Более простой способ - просто иметь свойство в вашем коде программной части, которое подается в URL-адрес jQuery , затем вы можете установить директивы препроцессора для его объявления. Или, если вы предпочитаете сохранить URL-адрес в коде спереди, вы можете использовать элемент управления Literal и переключать их видимость в коде программной части на основе директив процессора.
Например:
code-infront:
<asp:literal id="litJQuery" EnableViewState="false" runat="Server">
<script type="text/javascript" src="resources/jquery-1.3.2.js" />
</asp:literal>
<asp:literal id="litJQueryDebug" EnableViewState="false" Visible="false" runat="Server">
<script type="text/javascript" src="resources/jquery-1.3.2.min.js" />
</asp:literal>
в методе Page_Load:
#if DEBUG
litJQueryDebug.Visible=true;
litJQuery.Visible=false;
#endif