Add template groups and targets for each framework version we intend to support
CSharpTarget loads the framework-specific template, then imports CSharpTarget.stg as a common base template
Automatically select the C# target variant for the current framework
Forgot to include framework v3.5
Use the CustomToolNamespace property to place generated code in particular namespaces (defaults to the root namespace of the project)
Fix group loading errors
Set file SubType
Rename projects to indicate they target .NET 4.5
Set framework-specific bin and obj output directories
Create framework-specific projects
Assign unique project guids and update output folder paths
Add projects to solution
Update project references
Avoid using the Volatile.Read/Write since it's only supported in .NET 4.5
Use ReadOnlyCollection or array instead of IReadOnlyList to address compatibility problems prior to .NET 4.5
Use bit operations instead of Enum.HasFlag
Use Utils.Join for improved compatibility with earlier frameworks
Use IDictionary instead of IReadOnlyDictionary before .NET 4.5
Return the proper collection types from generated context getter methods
Updated TargetFrameworkVersion for v4.0 runtime