$/
  artifacts/
  build/
  docs/
  lib/
  packages/
  samples/
  src/
  tests/
  .editorconfig
  .gitignore
  .gitattributes
  build.cmd
  build.sh
  LICENSE
  NuGet.Config
  README.md
  {solution}.sln
src- Main projects (the product code)tests- Test projectsdocs- Documentation stuff, markdown files, help files etc.samples(optional) - Sample projectslib- Things that can NEVER exist in a nuget packageartifacts- Build outputs go here. Doing a build.cmd/build.sh generates artifacts here (nupkgs, dlls, pdbs, etc.)packages- NuGet packagesbuild- Build customizations (custom msbuild files/psake/fake/albacore/etc) scriptsbuild.cmd- Bootstrap the build for windowsbuild.sh- Bootstrap the build for *nixglobal.json- ASP.NET vNext only
[Oo]bj/
[Bb]in/
.nuget/
_ReSharper.*
packages/
artifacts/
*.user
*.suo
*.userprefs
*DS_Store
*.sln.ide
There's probably more things that go in the ignore file.
- Update: Added docs folder
 - Added README.md and LICENSE - Critical if you're OSS, if not ignore it
 - Renamed 
testtotests - Added lib for things that CANNOT exist in nuget packages
 - Removed NuGet.config for people using packet :)
 - Added global.json for ASP.NET vnext
 - Added .editorconfig file in the root (x-plat IDE settings)
 - Added NuGet.config back because people were confused about it missing
 
thought I'd share,
this is the structure I follow for some projects. you can imagine that at root, besides the
.azuredevopsfolder, there'ssrc,testetc. foldersthe name
.azuredevopswas chosen because back in Azure DevOps when you place apull_request_template.mdfile in a folder with set name, then the repo's PR descriptions use the content of that file, pretty much used like a template for PR descriptionshowever, the name can be anything of course. e.g. something generic like
.devops