Pesquisa

quinta-feira, 26 de março de 2009

Acessando código fonte do .NET Framework

Com o lançamento do Visual Studio 2008 e do .NET Framework 3.5 a Microsoft anunciou publicamente a liberação de acesso ao código fonte para leitura durante o debug mediante concordância com os termos de licenciamento. Vale lembrar que as versões Express (gratuitas) não terão acesso a essa funcionalidade.
Para ter o acesso você precisa rodar um hotfix que vai atualizar o Visual Studio 2008 de forma a suportar os downloads dos arquivos de Symbols com as informações necessários ao debug.
As classes abaixo estão disponíveis para utilização:

  1. .NET Base Class Libraries (including System, System.CodeDom, System.Collections, System.ComponentModel, System.Diagnostics, System.Drawing, System.Globalization, System.IO, System.Net, System.Reflection, System.Runtime, System.Security, System.Text, System.Threading, etc).
  2. ASP.NET (System.Web, System.Web.Extensions)
  3. Windows Forms (System.Windows.Forms)
  4. Windows Presentation Foundation (System.Windows)
  5. ADO.NET and XML (System.Data and System.Xml)

Siga os procedimentos abaixo para configuração:

  1. Instale o hotfix Visual Studio 2008 QFE
    https://connect.microsoft.com/VisualStudio/Downloads/DownloadDetails.aspx?DownloadID=10443&wa=wsignin1.0
    Pode ocorrer um erro durante a instalação desse fix caso você tenha uma versão anterior (beta 2) instalado. Para resolver basta colocar o dvd do Visual Studio 2008 no drive.
  2. Configurando o Visual Studio 2008
    Inicie o VS2008 e vá em Tools > Options > Debugging
    a) Para iniciar o debug do código fonte desmarque a opção: Enable Just My Code (Managed only)
    b) Certifique de marcar a opção: Enabled source server support



  3. Configurando arquivo Symbols
    O Visual Studio 2008 vai automaticamente baixar os arquivos necessários para o debug do código fonte. Para isso você precisa seguir os passos de configuração abaixo:

    a) Adicione a referência para : http://referencesource.microsoft.com/symbols
    b) Defina a pasta que será salvo os arquivos de debug.
    c) Marque a opção: "Search the above loactions only when symbols are loaded manualy" (Download manual)
    d) Você pode optar também por não marcar a opção citada na letra "c" que o Visual Studio vai fazer download automático, porém pode demorar a depender da conexão internet (+- 50 MB). (Recomendado após os primeiros testes)
    Configurando Symbol

  4. Iniciando depuração do código
    Chegou o tão esperado momento de colocar em prática os conhecimentos e explorar o .NET por dentro.

    a) Coloque seu break point dentro do seu código.
    b) Rode o projeto.
    c) Localize a janela Call Stack ou chame com o atalho: CTRL + ALT + C .
    d) Selecione na janela Call Stack as referências e depois Load Symbols conforme figura 03 (download manual).
    e) Durante o processo de debug o Visual Studio vai salvar os arquivos de Symbols na pasta cache. Janela Call Stack

Definida as configurações você já pode colocar em prática e avaliar por exemplo a implementação do método DataBind de um GridView. Confira nas duas figuras seguintes:
Parte 1 - Colocando Break Point no DataBind()

GridView / DataBind

Parte 2 - Navegando pelo método DataBind() usando "F11"

DataBind

Parte 3 - Avaliando a implementação do DataBind do GridView diretamente no código fonte.

Dentro do método DataBind.

Com esse processo os desenvolvedores mais curiosos agora podem finalmente enxergar em tempo real o que está acontecendo nas chamadas de métodos internos do .NET.
Referências:
- . NET Framework Library Source Code now available
- Configuring Visual Studio to Debug .NET Framework Source Code

Créditos: Ramon Durães - http://www.linhadecodigo.com.br/Artigo.aspx?id=1655