Thursday, January 17, 2008 5:14 PM
masaez
Accediendo al código del Framework .NET
Ha sido liberado el código fuente del framework .NET. Este es un anuncio muy esperado por toda la comunidad.
Esto no solo permitirá recorrer y conocer el código, sino también integrarlo en Visual Studio y debuggear el código del mismísimo framework. Algo importante para destacar, es que el código ha sido liberado con una licencia de sólo lectura como referencia.
Como lo anunció Scott Guthrie en su post, las siguientes bibliotecas ya están disponibles:
- .NET Base Class Libraries (incluyendo 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).
- ASP.NET (System.Web, System.Web.Extensions)
- Windows Forms (System.Windows.Forms)
- Windows Presentation Foundation (System.Windows)
- ADO.NET and XML (System.Data and System.Xml)
A continuación incluyo una versión en español de la explicación realizada por Shawn Burke para configurar Visual Studio:
Configurando Visual Studio para debuggear el código fuente del framework .NET
CONFIGURACIÓN BÁSICA
Notar que esta funcionalidad no esta disponible en las versiones Express de los productos de Visual Studio 2008.
1) Instalar Visual Studio 2008 QFE. Este Hotfix sólo actualiza una DLL que es parte del depurador de Visual Studio que busca los archivos fuente, más detalles en la página de descarga.
UPDATE: Si obtiene un error al instalar el Hotfix, intente insertar su DVD de VS 2008 y luego correr el EXE nuevamente. Estamos viendo la causa raíz - está relacionado con tener una versión anterior de VS 2008 (e.g. Beta 2) instalada en la máquina. Pero este workaround debería permitir instalar el Hotfix correctamente.
2) Inicie Visual Studio 2008 y acceda a Tools > Options > Debugging > General. Si está corriendo bajo el Visual Basic Profile, necesitará verificar el cuadro on la parte izquierda del cuadro de diálogo Opciones marcado como "Show All Settings" antes de continuar (otros perfiles no tendrán esta opción).
Marque las siguientes dos opciones:
- Deshabilite la opción "Enable Just My Code"
- Habilite la opción "Enable Source Server Support"
Sus opciones se deberían ver así:

3) Luego, acceda a la sección "Symbols" e incluya la URL de descarga y la ubicación del cache. Específicamente, seleccione las siguientes tres opciones:
- Indique la ubicación del archivo de símbolos como: http://referencesource.microsoft.com/symbols
- Indique una ubicación para el cache. Asegúrese de tener acceso de lectura y escritura en dicha ubicación. Una buena opción para este path puede ser bajo su directorio de usuario (e.g. c:\users\sburke\symbols)
- Habilite la opción "Search the above locations only when symbols are loaded manually".
Cuando haya terminado, las opciones deberían verse como la imagen de abajo:

La configuración está completa!
DEBUGGEANDO EL CÓDIGO DEL FRAMEWORK
Para este primer ejemplo, comenzaremos con un proyecto C# Windows Aplication, pero funcionará de igual forma con un proyecto VB, Web, o WPF. Para recorrer esta explicación, cree el proyecto.
Fije un breakpoint en el método Form_Load:

Ahora ejecute el proyecto para que se detenga en el breakpoint, y vea la ventana Call Stack (CTRL+ALT+C). En el Call Stack, haga click derecho sobre System.Windows.Forms.dll, y elija "Load Symbols". Esto cargará los símbolos para el assembly System.Windows.Forms, los cuales son cerca de 10 megabytes, con lo cual la velocidad de la descarga variará de acuerdo a la velocidad de la conexión. Visual Studio puede no dar respuestas durante este tiempo. De todas formas, esta descarga sólo se realiza una vez por cada assembly. El archivo de símbolos (PDB) será cacheado en la máquina, en el directorio indicado anteriormente.

Esto cargará los símbolos para la DLL desde el servidor, y verá alguna información en la barra de estado que lo refleje. Cuando esto esté completo, la linea del assembly estará en negro, y el número de línea estará disponible. Necesitará hacer Right Click -> Load Symbols cada vez que inicie una sesión de debugging (pero de nuevo, los símbolos seran cacheados localmente para no tener que realizar la descarga cada vez).

Los símbolos de la DLL de Windows Forms han sido cargados, y podrá comenzar a ver el código del modo en que lo harías normalmente en una sesión de dubuging. En este caso podrá hacer Step In a la linea de código de más arriba, o podrá hacer doble click en una de las lineas de la ventana del Call Stack. En este caso, haremos Step In (F11).
La primera vez que acceda al código, se presentara el EULA para acceder al código fuente. Tome el tiempo de leer este EULA. Si acepta los términos del EULA, presione ACCEPT, y verá el código descargado.
Eso es todo! Ahora estará debugueando el código del Framework .NET!
