.Net Framework Mass Downloader
Welcome to the .NET Mass Downloader project. While it’s great that Microsoft has released the .NET Reference Source Code, you can only get it one file at a time while you’re debugging. If you’d like to batch download it for reading or to populate the cache, you’d have to write a program that instantiated and called each method in the Framework Class Library. Fortunately, .NET Mass Downloader comes to the rescue!
The developed this project with John Robins, to enable mass downloading of .Net Framework Source Code without the need of VS2008, or to initialy populate your symbol server caches.
The project includes the following classes , which also you can find usefull:
- A PE (Portable Executable) Parser : To Extract The Pdb Guids And Pdb Names from any given PE File. Developed by Kerem Kusmezer.
- A PDB Parser And Patcher : I can extract whole streams from a pdb file, also patch every stream in a pdb file. Pure C# Code. Developed By Kerem Kusmezer.
- A Webclient Class: Which allows direct connection with the referencesources server of Microsoft, also includes the 210 code parsing, eula text parsing. Developed By Kerem Kusmezer
- SrcSrv class Which Parses the srcsrv files included in each pdbs, to extract the url and file mappings of each source code mentioned in the pdb file. Developed By Kerem Kusmezer
- Console Application: Developed by John Robins, which encapsulates whole functionality and allows the download of the code using different parameters.
You can download the project from : http://www.codeplex.com/NetMassDownloader
Using .NET Mass Downloader
Open a command or PowerShell prompt and navigate to where you extracted the current release. The tool itself is NetMassDownloader.exe and when run without parameters shows the following help screen:
.Net Mass Downloader 126.96.36.199 - (c) 2008 by Kerem Kusmezer, John Robbins
Batch download the Microsoft .NET Reference Source code.
Usage: NetMassDownloader [-file ]
[-force] [-nologo] [-verbose] [-?]
-file - Download an individual file's PDB and source code. You can
specify multiple file parameters. (Short -f).
-directory - Download all the found PDB and source code for all files in
the specified directory. You can specify multiple
directory parameters (Short -d).
-output - The output directory for PDB and source files. The default
directory is the cache directory set in Visual Studio 2008.
By using the cache directory, you'll have the PDB and source
files available to Visual Studio 2008. However, to use the
.NET Reference Source Code with VS 2005, use the -output
switch and in the Options dialog, Debugging, Symbols property
page, add the specified output directory to the "Symbol file
(.pdb) locations." Also, add the directory to the Solution
Properties, Common Properties, Debug Source Files, Directories
containing source code location. The Visual Studio 2005
debugger will automatically load the source code. (Short -o)
-vsver - The Visual Studio version number to use for finding the cache
directory. The default is Visual Studio 2008,
but if you want to use the cache directory for Visual Studio
2005, you would pass '-vsver 8.0' (without quotes) (Short -vs)
-force - If specified, forces the downloading the PDB files into the
symbol server. When downloading to a symbol server if the PDB
exists, it's not downloaded. Using the -output switch will
always download and process the PDB. (Short -fo)
-nologo - Don't show the logo information. (Short -n)
-verbose - Do verbose output. May be worth turning on as the downloading
source code can take a long time. (Short -v)
-? - This help message.
The only required arguments are –file or –directory, both of which can be specified as many times as you’d like. When you specify a directory, only the .DLL and .EXE files from that directory will be processed. If you wanted to download all the source code from binaries in the .NET 2.0 32-bit and 64-bit directories, the command line you’d pass is: -d C:\Windows\Microsoft.NET\Framework\v2.0.50727 –d C:\Windows\Microsoft.NET\Framework64\v2.0.50727.
The main purpose of Net Mass Downloader is to populate the source code download cache for debugging, the default download location is the cache you specified to Visual Studio 2008. The –vsver switch to account for future Visual Studio versions so Mass Downloader could work with future CTPs and versions.
While it’s great to see the .NET Reference Source Code in Visual Studio 2008, there are a lot of developers out there who can’t upgrade yet, but would love to be able to debug into the .NET Reference Source Code. If you specify the -output parameter, the PDB and .NET Reference Source Code will be written to the specified directory. In Visual Studio 2005, place that directory in the Options dialog, Debugging, Symbols property page. In the “Symbol file (.pdb) locations” list box as the first item. Also in the Options dialog, Debugging, General property page, uncheck "Require source files to exactly match the original version." Finally, in each Visual Studio 2005 project go into the solution property pages, Common Properties, Debugging Source Files, and in the "Directories containing source code" add the output directory to the top of the list. That's enough for Visual Studio 2005 to debug into the .NET Reference Source Code.
When you first run Net Mass Downloader, you will be prompted with the current EULA for accessing the source code. If you don’t agree with the Microsoft EULA, clicking the Decline button will not download the source code.
Thanks to the Developer Division at Microsoft. First they released the .NET Reference Source Code, and second for allowing a couple of developers to have some fun and provide a utility for the community. Thank you for using .NET Mass Downloader. We just ask that you log any bugs and features into the project Issue Tracker.
If you have questions about particular pieces of the code, Kerem Kusmezer did the following parts: the PE (Portable Executable) Parser, the PDB Parser, the Webclient Class. and the SrcSrv class. John Robbins did the console driver, testing, and served as Kerem's code monkey.
You can contact my via firstname.lastname@example.org for requests and questions.