${{ values.description }}
After installing the .NET 6 SDK you can use the standard dotnet
CLI commands to build/test/run this service, for example:
$ dotnet build
$ dotnet test
$ dotnet run -p src/${{ dirNamePrefix }}/${{ fileNamePrefix }}.csproj
- Feature Service API Golden Path
- Minimal APIs
- Nullable reference types
- Global usings
- File scoped namespaces
- FluentValidation
- [src/${{ values.dirNamePrefix }}/](./src/${{ values.dirNamePrefix }}) : Application entry point. See [Program.cs](./src/${{ values.dirNamePrefix }}/Program.cs) and the [Startup](./src/${{ values.dirNamePrefix }}/Startup) folder.
- [src/${{ values.dirNamePrefix }}.Domain/](./src/${{ values.dirNamePrefix }}.Domain) : Domain classes, models, commands, validation logic, etc.
- [src/${{ values.dirNamePrefix }}.Infrastructure/](./src/${{ values.dirNamePrefix }}.Infrastructure) : Storage and other infrastructure support.
- tests/ : Unit and component tests.
- [${{ values.fileNamePrefix }}.sln](./${{ values.fileNamePrefix }}.sln) : Solution file.
- azure-pipelines.yml : Azure build pipeline.
- catalog-info.yaml : Backstage catalog information.
- Directory.Build.props : Common MSBuild properties.
- Dockerfile : Commands to assemble Docker image.
- NuGet.Config : NuGet sources.
The different appsettings.{_}.json
files refer to the following environments, selected by the environment variable ASPNETCORE_ENVIRONMENT
:
- Development : The local development environment (see also [launchSettings.json](src/${{ values.dirNamePrefix }}/Properties/launchSettings.json)).
- dev : funda dev environment
- acc : funda acceptance
- prod : funda production
The file catalog-info.yaml provides Backstage catalog integration (docs).
{%- if values.enableEndpoints %}
Endpoints provide lightweight HTTP handlers. They are defined in the [Endpoints](./src/${{ values.dirNamePrefix }}/Endpoints) directory.
{%- endif %}
{%- if values.enableControllers %}
ASP.NET MVC Controllers are defined in the [Controllers](./src/${{ values.dirNamePrefix }}/Controllers) directory.
{%- endif %}
{%- if values.enableFundaMessaging %}
The [Messaging](./src/${{ values.dirNamePrefix }}/Messaging) directory contains configuration for the Funda.Extensions.Messaging package.
{%- endif %}
{%- if values.enableSqlServer %}
See the "SqlServer"
section in [appsettings.json](src/${{ values.dirNamePrefix }}/appsettings.json) for the SqlServer connection string.
{%- endif %}
{%- if values.enableCosmosDb %}
See the "CosmosDb"
section in [appsettings.json](src/${{ values.dirNamePrefix }}/appsettings.json).
{%- if values.enableCosmosDbRepository %} A sample repository for Cosmos DB can be found here: [CosmosDbMeasurementRepository.cs](./src/${{ values.dirNamePrefix }}.Infrastructure/CosmosDb/CosmosDbRepository.cs). {%- endif %}
For local development, install the Cosmos DB Emulator.
{%- endif %}
{%- if values.enableEntityFramework %}
Entity Framework Core code lives in [Infrastructure/EntityFramework](src/${{ values.dirNamePrefix }}.Infrastructure/EntityFramework/). Initialization happens in [WebApplicationBuilderExtensions.cs](./src/${{ values.dirNamePrefix }}/Startup/WebApplicationBuilderExtensions.cs) and [src/${{ values.dirNamePrefix }}.Infrastructure/EntityFramework](./src/${{ values.dirNamePrefix }}.Infrastructure/EntityFramework).
See the "EntityFramework"
section in [appsettings.json](src/${{ values.dirNamePrefix }}/appsettings.json) for options.
{%- if values.enableEntityFrameworkRepository %} A sample repository for Entity Framework Core can be found here: [EntityFrameworkMeasurementRepository.cs](./src/${{ values.dirNamePrefix }}.Infrastructure/EntityFramework/EntityFrameworkMeasurementRepository.cs). {%- endif %}
{%- if values.enableEntityFrameworkCosmosDb %}
See "EntityFramework:CosmosDb"
in [appsettings.json](src/${{ values.dirNamePrefix }}/appsettings.json) for options.
{%- endif %}
{%- if values.enableEntityFrameworkSqlServer %}
See "EntityFramework:SqlServer"
in [appsettings.json](src/${{ values.dirNamePrefix }}/appsettings.json) for options.
{%- endif %} {%- endif %}
This codebase is owned by ${{ values.owner }}
Based on template ${{ values.templateName }}