Розкриття вихідного коду бібліотек

Автор: Scott

Одна з речей, над якими працювала моя команда – можливість для .NET-розробників завантажувати та переглядати вихідний код бібліотек .NET Framework та легко використовувати налагодження.

Сьогодні я радий повідомити, що ми надамо цю можливість разом із випуском .NET 3.5 та VS 2008.

коду
Малюнок 1.

бібліотек
Малюнок 2.

Framework
Малюнок 3.

Інтегрована у Visual Studio 2008 підтримка налагодження

Фінальна версія VS 2008 вже підтримує можливість налаштувати відладчик для динамічного завантаження символів налагодження .NET Framework (і відповідного вихідного коду) з Web-сервера Microsoft. Ви можете налаштувати завантаження символів .NET Framework як одноразове або як ручне завантаження на вимогу.

При налагодженні .NET-програм, встановивши точки переривання в коді, ви зможете побачити стік виклик налагоджувача, який містить детальну інформацію про файл і номер рядка для класів .NET Framework та методів вашої програми.

На наведеному вище малюнку ви можете бачити точку зупинки на виклик GridView1.DataBind(). Раніше не можна було заглибитись у метод DataBind() та подивитися, як він реалізований.

Тепер, у VS 2008, можна натиснути F11 (Step Into, крок усередину) і заглибитись у вихідний код .NET Framework за допомогою відладчика (рисунок 3).

У VS 2008 з'явиться підтримка автоматичного отримання вихідних файлів .NET Framework від Microsoft на запит. Це означає, що вихідний код класів ASP.NET GridView і BaseDataBoundControl (див. рисунок вище) не повинен бути присутнім на машині до запускувідладчика. Натомість при натисканні F11 VS може автоматично завантажити вихідні файли з сайту Microsoft і відкрити їх у IDE.

коду
Малюнок 4.

За допомогою динамічного завантаження файлів можна також гарантувати, що відповідні вихідні файли завжди будуть відповідати певній версії .NET Framework, встановленій на вашій машині (наприклад, якщо у вас встановлений GDR або Service Pack, будуть завантажені відповідні вихідні файли).

бібліотек
Малюнок 5.

Крім поглиблення в код .NET Framework, можна рушити по стеку викликів назад, знову ж таки у вихідні коди .NET Framework. Наприклад, у наведеному вище сценарії я міг би двічі клацнути по стеку викликів та побачити private-метод ProcessRequest у класі System.Web.UI.Page:

Можна рушити далі і перейти в реалізацію System.Threading.ThreadPool з mscorlib (яка управляє потоком нашої сторінки):

Зверніть увагу, що на двох попередніх малюнках показано, що вікна "Locals" і "Watch" повністю підтримуються як для вашого коду, так і для коду .NET Framework.

Висновок

Докладніше дізнатися про наші плани розкриття вихідного коду та про те, як працює інтеграція з відладчиком, можна дізнатися з подкасту http://www.hanselminutes.com/default.aspx?show >

Сподіваюся, це допоможе.