tooling

Installation
SKILL.md

Tooling

The dotnet ef CLI and Visual Studio Package Manager Console commands for migrations, scaffolding, and compiled models.

dotnet-ef CLI (src/dotnet-ef/)

RootCommand parses global options (--project, --startup-project, --framework, --configuration, --runtime, --no-build). Subcommands implemented in src/ef/Commands/ (Microsoft.EntityFrameworkCore.Tools.Commands): DatabaseCommand, DbContextCommand, MigrationsCommand. Each invokes MSBuild to build, then shells out via dotnet exec ef.dll, which hosts OperationExecutor.

PMC (src/EFCore.Tools/)

PowerShell module: Add-Migration, Update-Database, Scaffold-DbContext, Optimize-DbContext, etc. Routes to OperationExecutor.

MSBuild Tasks (src/EFCore.Tasks/)

NuGet package Microsoft.EntityFrameworkCore.Tasks provides build/publish-time compiled model and precompiled query generation.

Build Integration Flow

Targets in buildTransitive/Microsoft.EntityFrameworkCore.Tasks.targets:

  • Build flow: _EFGenerateFilesAfterBuild triggers after compilation when EFOptimizeContext=true and stage is build. Invokes OptimizeDbContext task, writes generated file list, re-triggers Build to compile new files.
  • Publish flow: _EFGenerateFilesBeforePublish runs before GeneratePublishDependencyFile. Auto-activates for PublishAOT=true. _EFPrepareDependenciesForPublishAOT cascades to project references.
  • Incremental: _EFProcessGeneratedFiles reads tracking files and adds .g.cs to @(Compile). Stale files removed by _EFPrepareForCompile.
  • Clean: _EFCleanGeneratedFiles deletes generated and tracking files.

Testing

  • CLI tests: test/dotnet-ef.Tests/, test/ef.Tests/
  • EFCore.Tasks has no dedicated test project — for task/target changes, create a test project and manually run dotnet build / dotnet publish with EFOptimizeContext=true to verify

Validation

  • For tool changes, create a test project and manually run affected commands to verify behavior
  • dotnet ef migrations script output matches expected DDL
Weekly Installs
1
Repository
dotnet/efcore
GitHub Stars
14.6K
First Seen
Mar 30, 2026