I don't know of a built-in way (though I've never looked for one); what to include will undoubtedly vary from project to project, and would be tricky to get right in an automated way. Here's a general list (off the top of my head) of what to include and exclude:
What to include
I've found a good rule of thumb to be "include whatever's under source control (except for source control metadata)". Basically:
- All source code (C# files)
- The solution file (.sln) and all project files (*.csproj)
- Any libraries your code depends on to build and/or run (DLLs)
- Any other files your project expects to be present at build- or run-time (e.g. app.config)
- Documentation (any you've already got, plus some sort of README indicating how to build/run your project)
- Satellite source files (e.g. installer scripts, custom tools, etc.)
What not to include
- Binary builds of your project (i.e. the bin\Debug, bin\Release and obj folders) -- binaries should be released separately
- Source control metadata (.svn folders, .hg folder, etc)
- Per-user development settings and data (e.g. ReSharper folders, *.suo files, *.user files)
- Intellisense files (*.ncb)
Key files are an interesting case -- if you're using one to create strongly-named assemblies, then you might or might not want to release that key file to the public. On one hand, it makes it easier for someone to make changes to your code and sign the resulting assembly, but on the other hand, someone could make malicious changes to your code then sign the assembly. See this question for a more complete discussion concerning whether to release key files or not.
This should cover most of the files in your project directory -- let me know if I've missed anything!