I’ve written in the past about structuring .NET projects and automating build processes. Setting up the directory structure, as well as the tooling, gets tedious quickly when spinning up multiple projects. I decided to create a “base” project structure to provide a shortcut when starting future projects.
Below is a screenshot of the project’s current layout. The tools folder has a number of build-related tools that I’ve written about before. There’s certainly room for a libs folder at the project root, for containing shippable libraries your code depends on (e.g. NLog, NHibernate). There’s also a thought of moving build scripts to a seperate folder, but there’s only two NAnt build files currently, so there isn’t much value in moving them.
The src folder contains a Visual Studio 2010 solution – slnname.sln. It’s an empty solution, no projects or any other additions. You can just open it up and get to adding projects.
I’ll point out that the project name field in a number of the files has been replaced with a placeholder:
[Project name...]. You can search and replace on this over all the build-related files, substituting the name of your choice.
The project repo is located on Bitbucket: https://bitbucket.org/grantpalin/dotnetbase. Bitbucket uses Mercurial (Hg), so you’ll need an Hg client. A good one for Windows is TortoiseHg (similar to TortoiseSVN).
To use this project base for your own projects, just check out the project, delete the .hg folder from the root, and go to town on the project. At this point, you’re free to make whatever customizations you need. As time goes on, I’ll probably extract useful tools/scripts/libraries from my own projects and add them to this base project, so they are available for the next new project.
Feel free to make use of the project base, and let me know if you find it useful.