14 11 2014
ASP.NET 5: How to debug with ASP.NET source?
Although ASP.NET MVC is well tested framework and probably you don’t find any major bugs in public releases you may still sometimes need to debug your application with ASP.NET MVC sources. In this posting I will show you how debugging with sources works in ASP.NET vNext.
Let’s go through steps needed currently to get MVC sources linked to debugger.
1. Use correct version of K Runtime
You must use correct version of K Runtime to run your application with ASP.NET MVC sources. If you have newer versions available then it is possible that newer components are incompatible with your code.
Just use the following command to switch to KRE version you need:
k use 1.0.0-alpha4
2. Getting ASP.NET MVC source
Download the code and extract it to some folder in your machine.
NB! You can find download button for release after features and fixed bugs list.
3. Fix version numbers in project.json files
Now comes the tricky part. If you have newer K Runtime available in your machine and ASP.NET MVC projects have no exact version numbers specified in project.json files then newest referenced packages are downloaded and used.
Of course, if you have newer K Runtimes in your machine and these are left there from some experiments and you don’t need them then you can just delete these versions. After this you must clean KPM packages folder too, so the latest versions of packages match the ones used in your application.
NB! If there is some better or easier way how to get same thing done then please write me a comment here or contact me directly.
4. Include source to your web application
Let’s make it quick and modify global,json file. There is only one JSON object defined and this object tells tools where sources are. Shortest way to get ASP.NET MVC to our project is to make global.json look like this (you can also add this new path as second member of sources array):
Clean your solution or build it and you will see how ASP.NET MVC projects are included to your solution.
To remove them later you have to restore global.json file and remove ASP.NET MVC projects manually.
5. Run your application
I have simple web application and we will try debugging with sources out on it. I put breakpoint to the end of Home controller Index() method.
Now let’s run application and wait until it hits the breakpoint. Instead of clicking Continue let’s click on “Step in” icon couple of times and see what happens.
Okay, it seems we are in and we can see what is going on inside ASP.NET MVC 6.
It was pretty easy for us to get ASP.NET MVC 6 source, configure it to use same versions of packages as we are using and then get it to debugger. Instead of manually adding ASP.NET MVC 6 projects one by one we used global.json file to include all projects needed. The fact that I had to clean up packages folders and restart Visual Studio couple of times is probably part of the show – don’t forget that we are still playing with alpha-version of tools.