Desde 2008 quando ASP.NET MVC ainda estava em preview, eu em palestras que ele é um framework open source, mas vejo poucas pessoas se beneficiando desse fato.  Durante o desenvolvimento eu já precisei algumas vezes olhar para o código fonte para entender o que estava acontecendo.

Um exemplo disso foi quando saiu o ViewBag, eu queria entender o que ele realmente fazia, tinha a impressão que ele setava o próprio ViewData, tudo indicava isso, mas não tinha certeza. Como eu já tinha configurado o meu Visual Studio para utilizar os símbolos do ASP.NET MVC eu consegui debugar e verificar no próprio código do ASP.NET MVC e ver o que realmente estava acontecendo.

Neste artigo vou demonstrar como configurar o Visual Studio para fazer isso e você poderá aproveitar desse benefício sempre que quiser.

Primeiro abra o seu Visual Studio 2010 e vá em Tools -> Options -> Debugger -> General

  • Desabilite a opção “Enable Just My Code (Managed only)
  • Habilite a opção “Enable .NET Framework source stepping
  • Habilite a opção “Enable source server support

As suas configurações devem estar iguais as que estão em destaque na imagem:

image

Depois entre na opção Symbols ainda em Debugger, nesta janela você deve configurar para que o Visual Studio faça o download  do servidor de símbolos da Microsoft, deixe a configuração igual a da imagem a seguir:

image

Clique em OK e vamos testar se está tudo funcionando, vamos criar um novo projeto ASP.NET MVC 3, neste novo projeto entre no HomeController.cs e crie um breakpoint na primeira linha da action Index, como está na imagem abaixo:

image

Agora vamos para o debug, inicie a aplicação pressionando F5, na primeira vez que você fizer isso ele irá fazer o download dos símbolos dos servidores da Microsoft (demora um pouquinho), quando terminar e ela irá parar nesse breakpoint, então dê um steep into (F11), se foi feito tudo como está no post (assumindo que não tem nada de errado no post J), ele irá entrar no código fonte do ASP.NET MVC 3 conforme a imagem abaixo:

image

Você pode verificar que dessa forma é fácil tirar a dúvida que eu estava no início do post, o ViewBag faz exatamente o que eu pensava, ele simplesmente utiliza o ViewData por trás dos panos.

É claro que quem quiser pode fazer o download do  download do código fonte do ASP.NET MVC e olhar direto no código, há também a opção de usar o próprio projeto no ASP.NET MVC junto com o seu, para isso você mudar algumas coisas para que o seu projeto utilize o projeto do ASP.NET MVC ao invés da DLL compilada que já está no seu sistema, mas isso fica para um outro post.

Aproveito para perguntar para vocês:

Vocês já sentiram essa necessidade? Já fizeram isso alguma vez? Fizeram de outra forma?