21.08.2007Новость одной строкой, чтобы не забыть
Сегодня вышел Community Technical Preview VSeWSS 1.1. Наконец-то появился инструментарий для создания solutions (.WSP-файлов), application-страниц (в папке _layouts) и еще несколько полезных фич.![]()
![]()
Сегодня вышел Community Technical Preview VSeWSS 1.1. Наконец-то появился инструментарий для создания solutions (.WSP-файлов), application-страниц (в папке _layouts) и еще несколько полезных фич.![]()
![]()
Помимо встроенной трассировки (через TraceContext), в ASP.NET можно использовать стандартные возможности трассировки, предоставляемые .NET Framework’ом. К таковым относятся классы System.Diagnostics.Trace и System.Diagnostics.Debug. Каждый из этих классов содержит одинаковый набор статических методов (Write, WriteLine и т.п.), отмеченных атрибутом ConditionalAttribute. Атрибут работает следующим образом: если при компиляции символ, который был ему передан в качестве параметра, не определен, то все вызовы метода, на котором висит атрибут, зануляются (преобразуются в nop). Для методов класса Debug атрибут ConditionalAttribute инициализирован символом “DEBUG“, для Trace - соответственно, “TRACE“.
По умолчанию, для обычных проектов (WinApp, Library и т.п.) в конфигурации Debug определены оба символа, а в Release - только символ TRACE. Увы и ах, но это правило не распространяется на веб-проекты в Visual Studio 2005. Связано это с несколько извратной моделью компиляции веб-сайта, но вдаваться в подробности я не хочу. Скажу только, что по умолчанию, символ TRACE не определен ни в режиме сборки Debug, ни в Release, т.е. вызов к System.Diagnostics.Trace.Write…() не происходит. Как же с этим бороться? Есть три способа, разной степени сложности.
<system.codedom> <compilers> <compiler language="c#;cs;csharp" extension=".cs" compilerOptions="/d:TRACE" type="Microsoft.CSharp.CSharpCodeProvider, System, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" warningLevel="1" /> <compiler language="VB" extension=".vb" compilerOptions="/d:Trace=true" type="Microsoft.VisualBasic.VBCodeProvider, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" /> </compilers> </system.codedom>
Таким же образом можно определять и другие символы (помимо DEBUG и TRACE). Есть только одна проблема: содержимое web.config’а не зависит от режима сборки (Debug/Release/…). В более сложных ситуациях может потребоваться несколько его копий, либо скрипт, заменяющий содержимое в зависимости от режима сборки проекта.
Трассировка веб-приложения, которая является крайне удобным средством отладки и мониторинга, выключена по умолчанию в VS 2005. К счастью, есть несколько вариантов решения этой проблемы; выбор одно из них зависит от условий разработки и личных предпочтений программиста. Надеюсь, что информация в этой записи позволит кому-то сэкономить несколько седых волос с головы и мучительных часов в отладке.
Technorati Tags: ASP.NET, Trace, Visual Studio
На днях угробил порядка 4 часов своей драгоценной жизни на то, чтобы обеспечить возможность удаленной отладки программы, запускаемой на виртуалке. Представленный ниже сценарий является результатом этих “танцев с бубном”, поэтому не претендует ни на полную достоверность, ни на необходимость выполнения всех пунктов. Это, с одной стороны, памятка лично мне, а с другой - вдруг кому пригодится?
Итак, имеем следующую ситуацию. Стенд разработки и отладки состоит из 3 машин:
Все 3 машины находятся в рамках одной сети, видят и пингуют друг друга. Это исходные условия, теперь перейдем к самому процессу настройки.
После этих телодвижений удаленная отладка на моём стенде заработала.
Еще раз скажу, что всё, описанное выше, это результат танцев с бубном в течении 4 часов. Не факт, что все настройки обязательны. Можно не отключать файрволы, а аккуратно открыть на них необходимые порты. В общем, вариантов много, я лишь привел тот, который для моей конфигурации оказался работоспособным.
Technorati Tags: Visual Studio, Remote Debug