name csharp-dotnet description Bootstrap C# .NET projects with modern tooling. Use when creating .NET applications, Web APIs, console apps, Blazor apps, or when the user wants to set up a C# development environment.
C# .NET Project Bootstrapper
Creates production-ready .NET 8+ projects with modern C# features and best practices.
Prerequisites
dotnet --version
dotnet --list-sdks
Install .NET SDK
Linux (Ubuntu/Debian) :
wget https://packages.microsoft.com/config/ubuntu/$(lsb_release -rs)/packages-microsoft-prod.deb -O packages-microsoft-prod.deb
sudo dpkg -i packages-microsoft-prod.deb
rm packages-microsoft-prod.deb
sudo apt-get update
sudo apt-get install -y dotnet-sdk-8.0
macOS :
brew install --cask dotnet-sdk
Project Templates
Template Command Description Console App dotnet new consoleCommand-line application Web API dotnet new webapiREST API with controllers Minimal API dotnet new webLightweight HTTP API Blazor Server dotnet new blazorserverServer-side Blazor app Blazor WebAssembly dotnet new blazorwasmClient-side Blazor app Class Library dotnet new classlibReusable library xUnit Tests dotnet new xunitUnit test project Worker Service dotnet new workerBackground service
Create Projects
Console Application
dotnet new console -n MyApp -o MyApp
cd MyApp
Web API (Minimal API - Recommended)
dotnet new web -n MyApi -o MyApi
cd MyApi
Solution with Multiple Projects
dotnet new sln -n MySolution
dotnet new web -n MyApi -o src/MyApi
dotnet new classlib -n MyCore -o src/MyCore
dotnet new xunit -n MyTests -o tests/MyTests
dotnet sln add src/MyApi src/MyCore tests/MyTests
dotnet add src/MyApi reference src/MyCore
dotnet add tests/MyTests reference src/MyCore
Project Structure
MySolution/
├── MySolution.sln
├── src/
│ ├── MyApi/
│ │ ├── MyApi.csproj
│ │ └── Program.cs
│ └── MyCore/
│ └── MyCore.csproj
├── tests/
│ └── MyTests/
│ └── MyTests.csproj
├── .editorconfig
├── Directory.Build.props
└── Directory.Packages.props
Modern .csproj Configuration
<Project Sdk ="Microsoft.NET.Sdk.Web" >
<PropertyGroup >
<TargetFramework > net8.0</TargetFramework >
<Nullable > enable</Nullable >
<ImplicitUsings > enable</ImplicitUsings >
<TreatWarningsAsErrors > true</TreatWarningsAsErrors >
<AnalysisLevel > latest-recommended</AnalysisLevel >
<EnforceCodeStyleInBuild > true</EnforceCodeStyleInBuild >
</PropertyGroup >
</Project >
Directory.Build.props
Create at solution root:
<Project >
<PropertyGroup >
<TargetFramework > net8.0</TargetFramework >
<Nullable > enable</Nullable >
<ImplicitUsings > enable</ImplicitUsings >
<TreatWarningsAsErrors > true</TreatWarningsAsErrors >
<AnalysisLevel > latest-recommended</AnalysisLevel >
</PropertyGroup >
</Project >
Minimal API Example
var builder = WebApplication.CreateBuilder(args );
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();
var app = builder.Build();
if (app.Environment.IsDevelopment())
{
app.UseSwagger();
app.UseSwaggerUI();
}
app.MapGet("/" , () => "Hello World!" );
app.MapGet("/items/{id}" , (int id) => new Item(id, $"Item {id} " ));
app.MapPost("/items" , (Item item) => Results.Created($"/items/{item.Id} " , item));
app.Run();
record Item (int Id , string Name );
Common NuGet Packages
dotnet add package Serilog.AspNetCore
dotnet add package FluentValidation.AspNetCore
dotnet add package Microsoft.EntityFrameworkCore.SqlServer
dotnet add package xunit
dotnet add package Moq
dotnet add package FluentAssertions
Development Commands
dotnet restore
dotnet build
dotnet run
dotnet watch run
dotnet test
dotnet format
dotnet publish -c Release -o ./publish
GitHub Actions CI
name: CI
on:
push:
branches: [main ]
pull_request:
branches: [main ]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-dotnet@v4
with:
dotnet-version: 8.0 .x
- run: dotnet restore
- run: dotnet build --no-restore -c Release
- run: dotnet test --no-build -c Release
Post-Setup Checklist
Create solution and project structure
Configure Directory.Build.props
Add .editorconfig for code style
Configure logging (Serilog)
Set up dependency injection
Add unit test project
Configure CI/CD pipeline