Skip to content

[Epic] Common template features for .NET templates (sln, editorconfig) #3208

@mikadumont

Description

@mikadumont

Audience: template authors

Background

At the moment a lot of .NET project templates have to manually create similar configuration related to:

  • framework
  • restore post action
  • optional adding of sln
  • language-specific features
  • nullable, global usings and other common MSBuild properties
  • AOT configurations
  • NuGet Packaging Properties (license, package name, authors, etc)

Moreover more common features will be nice to have:

  • optional editorconfig (original intention of the issue)
  • optional gitignore/gitattributes; git init

Implementing all of above is possible but will result in extra ~300 lines configuration in template.json and corresponding testing and maintenance effort. The configuration will be very similar to the same in all the templates.

Technical suggestion

We are considering to create a specific generator for .NET project templates which implicitly supports the features above.
All the author needs to do is to opt-in to desired behaviors via corresponding feature flags.

Justification

  • facilitate much easier entry point for template authoring via simpler configuration
  • decrease manual json configuration
  • unify configuration for the items above
  • unify experience with .NET SDK template

original description below
Copying Kathleen's comments from below:

The template team maintains the .NET standard .editorconfig. Logically this is the same one you get with dotnet new .editorconfig. Templates will not include .editorconfig.
When the user creates a project, they have the option to use --sln to create the project in a solution (a different feature that this assumes, although it might be later). If this switch is used, a .editorconfig will be placed at the solution level.
If the user either creates the new project with a parent directory that has a .sln file, or they use the --sln switch, no .editorconfig will be placed in the project file. Otherwise, it will be.
This might be managed by a post action so template authors could skip it, but we think it is probably the best behavior for all project templates.

The part about -sln is probably not relevant. Therefore, it should be considered out of the scope of this issue.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Priority:2Work that is important, but not critical for the releasearea: authoringEnhancements to the process of authoring, maintaining, and testing templatesarea: template-contentThe issue is related to content of template packages managed in this repo (/template_feed)featureThe issue defines new feature.gathering-feedbackThe issue requires feedback in order to be planned, please comment if the feature is useful for youtriagedThe issue was evaluated by the triage team, placed on correct area, next action defined.

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions