What is ProjectScaffold?

ProjectScaffold helps you get started with a new .NET/Mono project solution with everything needed for successful organising of code, tools and publishing.

We recommend you use ProjectScaffold for all new projects.

Tools include Paket for dependency management and FAKE for automating the build process.


  • helps manage NuGet packages
  • can reference files directly with a URL from GitHub or from any where on the web
  • gives precise and predictable control over referenced packages


Getting Started

The first thing to do is to clone or copy the ProjectScaffold repository to your developer workspace. This will eventually be your solution folder. Feel free to rename ProjectScaffold folder to your liking.


In order to generate your project first run:

$ build.cmd // on windows
$  // on mono

This would prompt you to enter a name for your project solution, which is required, and then some more details which are optional:

  • Project summary
  • Project description
  • Author's name for NuGet package
  • Tags for NuGet package (separated by spaces)
  • Github url (leave blank to use "")
  • Github raw url (leave blank to use "")
  • GitHub username
  • GitHub project name (if different than project name from above)
  • Initialize git repo [Yn]
  • Origin (url of git remote; blank to skip)

alt text

During this initialization process project structure is generated and necessary packages and tools would be downloaded.

After the initialization has finished you can open, edit, build and test using ProjectName.sln.

Migrating an Existing Project

Manual steps for migrating existing project to Scaffold structure:

  • Clone ProjectScaffold to new folder
  • Run the initializing build
  • Delete .git folder
  • Copy intitialized scaffold files and folders to original project folder
  • git add / commit project -m"first pass migrating to scaffold structure" (otherwise git will be confused by next mv)
  • git mv necessary project file folders into src and/or test folder(s)
  • git commit
  • ... and any following cleanup

Be sure to do only git mv file renames in a single commit. If you try to commit anything else git will treat the renames as file delete / file add and you will loose history on those files.

Further topics

Contributing and copyright

The project is hosted on GitHub where you can report issues, fork the project and submit pull requests.

If you want to contribute to the documentation, please do so by doing a checkout of the docs branch of the repo.

The library is available under Public Domain license, which allows modification and redistribution for both commercial and non-commercial purposes. For more information see the License file in the GitHub repository.

Fork me on GitHub