Skip to content

feat(182): Visual Studio extension for JD.Efcpt.Build#207

Merged
JerrettDavis merged 3 commits into
mainfrom
feat/182-vs-extension
Jul 11, 2026
Merged

feat(182): Visual Studio extension for JD.Efcpt.Build#207
JerrettDavis merged 3 commits into
mainfrom
feat/182-vs-extension

Conversation

@JerrettDavis

Copy link
Copy Markdown
Owner

Summary

  • Adds ide/vs/ with a shared, IDE-agnostic JD.Efcpt.Ide.Core (netstandard2.0, ubuntu-CI-tested): JdDiagnosticParser (JDxxxx warning/error parsing, mirrors ide/vscode/src/jdDiagnostics.ts), BuildProfileReader (deserializes obj/efcpt/build-profile.json against the real schema in src/JD.Efcpt.Build.Tasks/Profiling/BuildRunOutput.cs), ProjectDiscovery (finds .csproj files referencing JD.Efcpt.Build), and SecretRedaction (a documented, intentional local copy of JD.Efcpt.Build.Core.Diagnostics.SecretRedaction - that project multi-targets net472;net8.0;net9.0;net10.0 and has no netstandard2.0 target, so it isn't safely project-referenceable from this assembly without broadening its TFM list).
  • Adds the Windows-only JD.Efcpt.VsExtension VSIX (net48, Community.VisualStudio.Toolkit.17 + Microsoft.VisualStudio.SDK + Microsoft.VSSDK.BuildTools, [17.0,19.0)): Tools > Entity Framework > JD.Efcpt: Regenerate Models and JD.Efcpt: Show Build Status, an AsyncPackage that background-loads on SolutionExists.
    • Regenerate Models resolves the target project (active project if it references JD.Efcpt.Build, else the first match anywhere in the solution) and shells out to dotnet build <proj> -p:EfcptForceRegenerate=true -p:EfcptEnableProfiling=true -p:EfcptLogVerbosity=minimal, streaming redacted output into a dedicated "JD.Efcpt" Output Window pane and parsing JDxxxx diagnostics as they arrive. Shelling out (not calling MSBuild APIs in-process) avoids design-time-build entanglement and matches CLI/CI behavior exactly.
    • Show Build Status opens a WPF tool window bound to a viewmodel populated from BuildProfileReader (model count, status, timestamps, duration, warnings/errors), with a FileSystemWatcher on obj/efcpt/build-profile.json so it also refreshes after CLI/IDE builds, not just extension-triggered ones.
    • Uses its own command-set GUID, package GUID, tool-window GUID, and its own "Entity Framework" submenu group under Tools (JdEfcptCommandTable.vsct) - none shared with EF Core Power Tools, so it cannot collide with it.
  • JD.Efcpt.Ide.Core + JD.Efcpt.Ide.Core.Tests are added to JD.Efcpt.Build.sln (45 xUnit tests, ubuntu CI builds+tests them). JD.Efcpt.VsExtension is deliberately excluded from that sln (its VSSDK/net48 chain would break the ubuntu dotnet build) and lives only in the new ide/vs/JD.Efcpt.Vs.sln.
  • New Windows-only .github/workflows/vsix.yml: builds+packages the VSIX via msbuild (microsoft/setup-msbuild) on windows-latest, uploads the .vsix artifact; marketplace publish is gated on the VS_MARKETPLACE_PAT secret and skips cleanly (mirroring the NuGet-key guard in ci.yml) rather than failing when it's absent. ci.yml itself is untouched.
  • docs/user-guide/visual-studio.md (+ toc.yml entry): install, commands, tool window, redaction, EF Core Power Tools conflict-avoidance, architecture, CI, and local-build notes.

Validation

  • dotnet build JD.Efcpt.Build.sln -c Debug - 0 errors (26 projects, 6 pre-existing unrelated warnings).
  • dotnet test ide/vs/JD.Efcpt.Ide.Core.Tests - 45/45 passing.
  • JD.Efcpt.VsExtension was not expected to build on this dev machine (no VS SDK) but, after fixing the net472net48 target (Community.VisualStudio.Toolkit.17's NuGet dependency group is declared for .NETFramework4.8 specifically) and a couple of vs-threading analyzer fixups, dotnet build ide/vs/JD.Efcpt.VsExtension/JD.Efcpt.VsExtension.csproj actually compiles with 0 errors/0 warnings here. Full .vsix packaging (VSSDK's CreateVsixContainer target chain) did not run under plain dotnet build in this environment - that step needs the windows-latest CI runner's full MSBuild/VSSDK tooling, which is what vsix.yml exercises.

Test plan

  • vsix.yml runs green on windows-latest and uploads a .vsix artifact
  • Install the built .vsix locally in VS 2022 and confirm Tools > Entity Framework > JD.Efcpt: Regenerate Models / JD.Efcpt: Show Build Status appear and don't collide with EF Core Power Tools
  • Regenerate Models on a real JD.Efcpt.Build-referencing project produces output in the JD.Efcpt Output pane and regenerates models
  • Show Build Status tool window populates from obj/efcpt/build-profile.json and auto-refreshes after a build

Closes #182.

Adds ide/vs/ with a shared, IDE-agnostic JD.Efcpt.Ide.Core (netstandard2.0,
ubuntu-CI-tested: JDxxxx diagnostic parser, build-profile.json reader matched
against the real BuildRunOutput.cs schema, project discovery, secret
redaction) plus the Windows-only JD.Efcpt.VsExtension VSIX (net48,
Community.VisualStudio.Toolkit.17): Tools > Entity Framework >
JD.Efcpt: Regenerate Models and JD.Efcpt: Show Build Status, backed by a
build-status tool window with a FileSystemWatcher on build-profile.json.
Regenerate Models shells out to `dotnet build -p:EfcptForceRegenerate=true
-p:EfcptEnableProfiling=true -p:EfcptLogVerbosity=minimal`, streaming
redacted output into a dedicated "JD.Efcpt" Output Window pane and parsing
JDxxxx diagnostics as they arrive.

The VSIX uses its own command-set/tool-window/package GUIDs and its own
"Entity Framework" submenu under Tools, distinct from EF Core Power Tools,
so it cannot collide with it.

JD.Efcpt.Ide.Core + JD.Efcpt.Ide.Core.Tests are added to JD.Efcpt.Build.sln
(ubuntu CI builds and tests them); JD.Efcpt.VsExtension is deliberately kept
out of that sln (its VSSDK/net48 chain would break the ubuntu build) and
lives only in the new ide/vs/JD.Efcpt.Vs.sln. A new windows-only
.github/workflows/vsix.yml builds and packages the VSIX via msbuild and
uploads it as an artifact; marketplace publish is secret-gated on
VS_MARKETPLACE_PAT and skips cleanly when absent.

Closes #182.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@codecov

codecov Bot commented Jul 11, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 92.19%. Comparing base (6f969d6) to head (ac61282).

Additional details and impacted files
@@            Coverage Diff             @@
##             main     #207      +/-   ##
==========================================
+ Coverage   84.93%   92.19%   +7.26%     
==========================================
  Files          93       93              
  Lines        4832     4832              
  Branches      746      620     -126     
==========================================
+ Hits         4104     4455     +351     
+ Misses        429      377      -52     
+ Partials      299        0     -299     
Flag Coverage Δ
unittests 92.19% <ø> (+7.26%) ⬆️

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

JerrettDavis and others added 2 commits July 11, 2026 15:25
…e correlation, error surfacing, watcher recovery

Applies all findings from two adversarial reviews of PR #207:

1. [HIGH data race] RegenerateModelsService: diagnostics.Add ran outside the
   writeLock and was called from BOTH concurrent stdout/stderr pump loops
   (List<T>.Add is not thread-safe → could throw or drop diagnostics). Moved
   the Add inside the same writeLock critical section as the pane write, so all
   mutation of the list and pane is serialized. No diagnostics lost.

2. [CRITICAL stale-profile] The build-status tool window showed the prior green
   run after a FAILED regenerate (which never rewrites build-profile.json, so
   the watcher never fired). Added:
   - A new testable BuildStatusEvaluator + RegenerateAttempt in Ide.Core that,
     given the last regenerate the extension initiated (start time + succeeded +
     exit code) and the loaded profile, classifies Current / StaleFromEarlierRun
     / StaleAfterFailedRegenerate / NoProfile and produces a user-facing banner.
     Compared in UTC; a profile predating the attempt (or missing EndTime) is
     treated as stale conservatively. 8 new Ide.Core.Tests (ubuntu CI).
   - A windows-only RegenerateNotifier: RegenerateModelsCommand captures the run
     start timestamp, then pushes the outcome directly to any open tool window,
     independent of the FileSystemWatcher. The tool window subscribes, records
     the attempt, and re-renders via the evaluator so a failed/superseded run is
     shown with a banner instead of the stale success. A banner element was added
     to the tool-window XAML.

3. [HIGH swallowed errors]
   a. ProjectDiscovery: narrowed the bare `catch {}` to
      `catch (IOException | UnauthorizedAccessException)` and now returns a
      ProjectDiscoveryResult carrying Skipped { Path, Reason } so a lock/perms
      error is distinguishable from "no JD.Efcpt project". Unexpected exception
      types propagate. New Ide.Core.Tests cover skip-with-reason and no-swallow.
   b. ProjectResolver: the active-project fast-path File.ReadAllText is now
      guarded the same way as the fallback scan (routed through the same
      DiscoverJdEfcptProjects try/catch) and surfaces skipped candidates.
   c. RegenerateModelsCommand.ExecuteAsync now wraps the whole flow in try/catch
      that reports via the output pane + VS.MessageBox.ShowErrorAsync.
   d. The tool-window async-void handlers now ALSO set the viewmodel to a visible
      error state (SetUnavailable) in their catch blocks, not just ex.LogAsync().

4. [HIGH FileSystemWatcher] EnsureWatcher wraps construction/arming in try/catch,
   subscribes to _watcher.Error, and on error logs, sets "Live updates stopped —
   click Refresh," and re-arms on the next reload (handles dotnet clean / obj
   deletion + buffer-overflow instead of freezing permanently).

5. [LOW doc drift] ProjectDiscovery XML doc no longer claims to match
   PackageVersion (the regex matches PackageReference).

Validation: dotnet build JD.Efcpt.Build.sln -c Debug → 0 errors (VSIX still
excluded); dotnet test Ide.Core.Tests → 54/54 passing; VSIX Release compile
→ 0 errors/0 warnings locally (full .vsix packaging remains CI-only).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Diagnosed from failed run 29167011617: msbuild compiled the extension DLL with
0 errors but the "Locate built .vsix" step reported "No .vsix was produced".
The locate step was already recursive/correct — this was CASE B: the .vsix was
genuinely never produced because the CreateVsixContainer target chain never ran
(the msbuild target flow was PrepareForBuild → CoreCompile →
CopyFilesToOutputDirectory → Done, with no GeneratePkgDefFile /
CreateVsixContainer).

Root cause: CreateVsixContainer lives in Microsoft.VsSDK.targets and is appended
to $(PrepareForRunDependsOn) (which Microsoft.Common.targets runs during a normal
Build). Microsoft.VSSDK.BuildTools only auto-imports its path/env setup
props+targets — it does NOT import Microsoft.VsSDK.targets. The SDK-style project
therefore never had the packaging targets at all (the classic VSIX template
imports them explicitly).

Fix:
- Convert the project to the explicit SDK import form (Import Sdk.props …;
  body; Import Sdk.targets …) and then import
  $(VSToolsPath)\VSSDK\Microsoft.VsSDK.targets AFTER the SDK targets, guarded by
  '$(MSBuildRuntimeType)' == 'Full'. Under full MSBuild (Visual Studio / windows
  CI) the packaging targets run and produce the .vsix; under `dotnet build`
  (Core) the import is skipped so the net472-only VSIX tasks never load and the
  cross-platform compile stays 0 errors.
- Fix VSSDK1310: the manifest's <License>..\..\..\LICENSE</License> escaped the
  package root. Ship the repo LICENSE inside the .vsix at the package root
  (Content Include with Link=LICENSE + IncludeInVSIX) and reference it as
  <License>LICENSE</License>.

Verified locally with full VS18 MSBuild (same Full runtime as CI): produces
ide/vs/JD.Efcpt.VsExtension/bin/Release/net48/JD.Efcpt.VsExtension.vsix
containing extension.vsixmanifest, JD.Efcpt.VsExtension.dll,
Community.VisualStudio.Toolkit.dll, JD.Efcpt.Ide.Core.dll,
JD.Efcpt.VsExtension.pkgdef and LICENSE — exactly where the recursive locate
step looks. `dotnet build ide/vs/JD.Efcpt.VsExtension -c Release` and
`dotnet build JD.Efcpt.Build.sln -c Debug` both remain 0 errors.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@github-actions

Copy link
Copy Markdown
Contributor

Code Coverage

Summary
  Generated on: 07/11/2026 - 21:02:00
  Coverage date: 07/11/2026 - 20:49:50 - 07/11/2026 - 21:01:57
  Parser: MultiReport (7x Cobertura)
  Assemblies: 11
  Classes: 132
  Files: 93
  Line coverage: 88.7%
  Covered lines: 5510
  Uncovered lines: 695
  Coverable lines: 6205
  Total lines: 14514
  Branch coverage: 71% (2168 of 3052)
  Covered branches: 2168
  Total branches: 3052
  Method coverage: 96.3% (1049 of 1089)
  Full method coverage: 85.9% (936 of 1089)
  Covered methods: 1049
  Fully covered methods: 936
  Total methods: 1089

JD.Efcpt.Build.ConnectionStrings.AwsSecretsManager                                                                                                                 80%
  JD.Efcpt.Build.ConnectionStrings.AwsSecretsManager.AwsSecretsManagerClientAdapter                                                                              57.1%
  JD.Efcpt.Build.ConnectionStrings.AwsSecretsManager.AwsSecretsManagerConnectionStringSource                                                                     91.2%

JD.Efcpt.Build.ConnectionStrings.AzureKeyVault                                                                                                                   80.9%
  JD.Efcpt.Build.ConnectionStrings.AzureKeyVault.AzureKeyVaultConnectionStringSource                                                                             94.4%
  JD.Efcpt.Build.ConnectionStrings.AzureKeyVault.AzureSecretClientAdapter                                                                                           0%

JD.Efcpt.Build.Core                                                                                                                                              88.7%
  JD.Efcpt.Build.Core.Config.CodeGenerationOverrides                                                                                                              100%
  JD.Efcpt.Build.Core.Config.EfcptConfigGenerator                                                                                                                77.7%
  JD.Efcpt.Build.Core.Config.EfcptConfigOverrides                                                                                                                 100%
  JD.Efcpt.Build.Core.Config.FileLayoutOverrides                                                                                                                  100%
  JD.Efcpt.Build.Core.Config.NamesOverrides                                                                                                                       100%
  JD.Efcpt.Build.Core.Config.ReplacementsOverrides                                                                                                                100%
  JD.Efcpt.Build.Core.Config.TypeMappingsOverrides                                                                                                                100%
  JD.Efcpt.Build.Core.ConnectionStrings.AppConfigConnectionStringParser                                                                                           100%
  JD.Efcpt.Build.Core.ConnectionStrings.AppSettingsConnectionStringParser                                                                                         100%
  JD.Efcpt.Build.Core.ConnectionStrings.ConfigurationFileTypeValidator                                                                                            100%
  JD.Efcpt.Build.Core.ConnectionStrings.ConnectionStringResolutionChain                                                                                          88.5%
  JD.Efcpt.Build.Core.ConnectionStrings.ConnectionStringResolutionContext                                                                                         100%
  JD.Efcpt.Build.Core.ConnectionStrings.ConnectionStringResult                                                                                                    100%
  JD.Efcpt.Build.Core.ConnectionStrings.ConnectionStringSourceContext                                                                                              75%
  JD.Efcpt.Build.Core.ConnectionStrings.ConnectionStringSourceException                                                                                           100%
  JD.Efcpt.Build.Core.ConnectionStrings.ConnectionStringSourceResult                                                                                               90%
  JD.Efcpt.Build.Core.ConnectionStrings.CoreConnectionStringSourceResolver                                                                                          0%
  JD.Efcpt.Build.Core.ConnectionStrings.EnvironmentVariableConnectionStringSource                                                                                 100%
  JD.Efcpt.Build.Core.Diagnostics.DefaultSdkProbe                                                                                                                33.3%
  JD.Efcpt.Build.Core.Diagnostics.DefaultToolAcquirer                                                                                                            68.4%
  JD.Efcpt.Build.Core.Diagnostics.DoctorEngine                                                                                                                   91.8%
  JD.Efcpt.Build.Core.Diagnostics.DoctorInputs                                                                                                                   90.9%
  JD.Efcpt.Build.Core.Diagnostics.DotNetToolUtilities                                                                                                            85.2%
  JD.Efcpt.Build.Core.Diagnostics.SdkProbeCache                                                                                                                    86%
  JD.Efcpt.Build.Core.Diagnostics.SecretRedaction                                                                                                                94.1%
  JD.Efcpt.Build.Core.Diagnostics.ToolAcquisitionOutcome                                                                                                          100%
  JD.Efcpt.Build.Core.Diagnostics.ToolAcquisitionRequest                                                                                                          100%
  JD.Efcpt.Build.Core.FileHash                                                                                                                                    100%
  JD.Efcpt.Build.Core.Logging.NullBuildLog                                                                                                                        100%
  JD.Efcpt.Build.Core.PathUtils                                                                                                                                  91.6%
  JD.Efcpt.Build.Core.Processes.CommandNormalizationStrategy                                                                                                     94.1%
  JD.Efcpt.Build.Core.Processes.ProcessCommand                                                                                                                    100%
  JD.Efcpt.Build.Core.Processes.ProcessResult                                                                                                                     100%
  JD.Efcpt.Build.Core.Processes.ProcessRunner                                                                                                                    84.4%
  JD.Efcpt.Build.Core.Providers.ProviderNames                                                                                                                    96.4%

JD.Efcpt.Build.Firebird                                                                                                                                          98.7%
  JD.Efcpt.Build.Tasks.Schema.Providers.FirebirdProviderAdapter                                                                                                   100%
  JD.Efcpt.Build.Tasks.Schema.Providers.FirebirdSchemaReader                                                                                                     98.6%

JD.Efcpt.Build.MySqlConnector                                                                                                                                     100%
  JD.Efcpt.Build.Tasks.Schema.Providers.MySqlProviderAdapter                                                                                                      100%
  JD.Efcpt.Build.Tasks.Schema.Providers.MySqlSchemaReader                                                                                                         100%

JD.Efcpt.Build.Oracle                                                                                                                                             100%
  JD.Efcpt.Build.Tasks.Schema.Providers.OracleProviderAdapter                                                                                                     100%
  JD.Efcpt.Build.Tasks.Schema.Providers.OracleSchemaReader                                                                                                        100%

JD.Efcpt.Build.PostgreSQL                                                                                                                                         100%
  JD.Efcpt.Build.Tasks.Schema.Providers.PostgreSqlProviderAdapter                                                                                                 100%
  JD.Efcpt.Build.Tasks.Schema.Providers.PostgreSqlSchemaReader                                                                                                    100%

JD.Efcpt.Build.Providers.Abstractions                                                                                                                              98%
  JD.Efcpt.Build.Tasks.Extensions.DataRowExtensions                                                                                                               100%
  JD.Efcpt.Build.Tasks.Extensions.StringExtensions                                                                                                                100%
  JD.Efcpt.Build.Tasks.Schema.ColumnModel                                                                                                                         100%
  JD.Efcpt.Build.Tasks.Schema.ColumnNameMapping                                                                                                                   100%
  JD.Efcpt.Build.Tasks.Schema.ConstraintModel                                                                                                                     100%
  JD.Efcpt.Build.Tasks.Schema.ForeignKeyColumnModel                                                                                                               100%
  JD.Efcpt.Build.Tasks.Schema.ForeignKeyModel                                                                                                                      90%
  JD.Efcpt.Build.Tasks.Schema.IndexColumnModel                                                                                                                    100%
  JD.Efcpt.Build.Tasks.Schema.IndexModel                                                                                                                         92.8%
  JD.Efcpt.Build.Tasks.Schema.SchemaModel                                                                                                                         100%
  JD.Efcpt.Build.Tasks.Schema.SchemaReaderBase                                                                                                                    100%
  JD.Efcpt.Build.Tasks.Schema.TableModel                                                                                                                         92.8%

JD.Efcpt.Build.Snowflake                                                                                                                                          100%
  JD.Efcpt.Build.Tasks.Schema.Providers.SnowflakeProviderAdapter                                                                                                  100%

JD.Efcpt.Build.Sqlite                                                                                                                                             100%
  JD.Efcpt.Build.Tasks.Schema.Providers.SqliteProviderAdapter                                                                                                     100%
  JD.Efcpt.Build.Tasks.Schema.Providers.SqliteSchemaReader                                                                                                        100%

JD.Efcpt.Build.Tasks                                                                                                                                             87.4%
  JD.Efcpt.Build.Tasks.AddSqlFileWarnings                                                                                                                         100%
  JD.Efcpt.Build.Tasks.ApplyConfigOverrides                                                                                                                       100%
  JD.Efcpt.Build.Tasks.BuildLog                                                                                                                                   100%
  JD.Efcpt.Build.Tasks.Chains.DirectoryResolutionChain                                                                                                           91.6%
  JD.Efcpt.Build.Tasks.Chains.DirectoryResolutionContext                                                                                                          100%
  JD.Efcpt.Build.Tasks.Chains.FileResolutionChain                                                                                                                 100%
  JD.Efcpt.Build.Tasks.Chains.FileResolutionContext                                                                                                               100%
  JD.Efcpt.Build.Tasks.Chains.ResourceResolutionChain                                                                                                            93.1%
  JD.Efcpt.Build.Tasks.Chains.ResourceResolutionContext                                                                                                           100%
  JD.Efcpt.Build.Tasks.CheckSdkVersion                                                                                                                           40.9%
  JD.Efcpt.Build.Tasks.ComputeFingerprint                                                                                                                        97.8%
  JD.Efcpt.Build.Tasks.Config.EfcptConfigOverrideApplicator                                                                                                      93.1%
  JD.Efcpt.Build.Tasks.ConnectionStrings.SatelliteConnectionStringSourceResolver                                                                                 67.2%
  JD.Efcpt.Build.Tasks.DacpacFingerprint                                                                                                                         96.1%
  JD.Efcpt.Build.Tasks.DbContextNameGenerator                                                                                                                    83.6%
  JD.Efcpt.Build.Tasks.Decorators.ProfileInputAttribute                                                                                                           100%
  JD.Efcpt.Build.Tasks.Decorators.ProfileOutputAttribute                                                                                                           50%
  JD.Efcpt.Build.Tasks.Decorators.ProfilingBehavior                                                                                                              91.6%
  JD.Efcpt.Build.Tasks.Decorators.TaskExecutionContext                                                                                                           66.6%
  JD.Efcpt.Build.Tasks.Decorators.TaskExecutionDecorator                                                                                                          100%
  JD.Efcpt.Build.Tasks.DetectSqlProject                                                                                                                            84%
  JD.Efcpt.Build.Tasks.EfcptDoctor                                                                                                                                100%
  JD.Efcpt.Build.Tasks.EnsureDacpacBuilt                                                                                                                         96.1%
  JD.Efcpt.Build.Tasks.Extensions.EnumerableExtensions                                                                                                            100%
  JD.Efcpt.Build.Tasks.FileSystemHelpers                                                                                                                          100%
  JD.Efcpt.Build.Tasks.FinalizeBuildProfiling                                                                                                                     100%
  JD.Efcpt.Build.Tasks.InitializeBuildProfiling                                                                                                                   100%
  JD.Efcpt.Build.Tasks.MessageLevelHelpers                                                                                                                        100%
  JD.Efcpt.Build.Tasks.ModuleInitializer                                                                                                                          100%
  JD.Efcpt.Build.Tasks.MsBuildPropertyHelpers                                                                                                                     100%
  JD.Efcpt.Build.Tasks.Profiling.ArtifactInfo                                                                                                                     100%
  JD.Efcpt.Build.Tasks.Profiling.BuildConfiguration                                                                                                               100%
  JD.Efcpt.Build.Tasks.Profiling.BuildGraph                                                                                                                       100%
  JD.Efcpt.Build.Tasks.Profiling.BuildGraphNode                                                                                                                   100%
  JD.Efcpt.Build.Tasks.Profiling.BuildProfiler                                                                                                                   95.2%
  JD.Efcpt.Build.Tasks.Profiling.BuildProfilerManager                                                                                                             100%
  JD.Efcpt.Build.Tasks.Profiling.BuildRunOutput                                                                                                                   100%
  JD.Efcpt.Build.Tasks.Profiling.DiagnosticMessage                                                                                                                100%
  JD.Efcpt.Build.Tasks.Profiling.JsonTimeSpanConverter                                                                                                            100%
  JD.Efcpt.Build.Tasks.Profiling.ProjectInfo                                                                                                                      100%
  JD.Efcpt.Build.Tasks.Profiling.TaskExecution                                                                                                                    100%
  JD.Efcpt.Build.Tasks.ProfilingHelper                                                                                                                            100%
  JD.Efcpt.Build.Tasks.QuerySchemaMetadata                                                                                                                       93.4%
  JD.Efcpt.Build.Tasks.RenameGeneratedFiles                                                                                                                       100%
  JD.Efcpt.Build.Tasks.ResolveDbContextName                                                                                                                      96.9%
  JD.Efcpt.Build.Tasks.ResolveSqlProjAndInputs                                                                                                                   92.6%
  JD.Efcpt.Build.Tasks.RunEfcpt                                                                                                                                  96.8%
  JD.Efcpt.Build.Tasks.RunSqlPackage                                                                                                                             50.5%
  JD.Efcpt.Build.Tasks.Schema.CustomProviderException                                                                                                             100%
  JD.Efcpt.Build.Tasks.Schema.DatabaseProviderFactory                                                                                                             100%
  JD.Efcpt.Build.Tasks.Schema.EfcptToolAcquisitionFailedException                                                                                                 100%
  JD.Efcpt.Build.Tasks.Schema.EfcptToolAcquisitionNotConfiguredException                                                                                          100%
  JD.Efcpt.Build.Tasks.Schema.EfcptToolNotAvailableOfflineException                                                                                               100%
  JD.Efcpt.Build.Tasks.Schema.ProviderAdapterResolver                                                                                                              95%
  JD.Efcpt.Build.Tasks.Schema.ProviderDriverNotFoundException                                                                                                     100%
  JD.Efcpt.Build.Tasks.Schema.Providers.SqlServerProviderAdapter                                                                                                  100%
  JD.Efcpt.Build.Tasks.Schema.Providers.SqlServerSchemaReader                                                                                                     100%
  JD.Efcpt.Build.Tasks.Schema.SchemaFingerprinter                                                                                                                 100%
  JD.Efcpt.Build.Tasks.SerializeConfigProperties                                                                                                                  100%
  JD.Efcpt.Build.Tasks.SqlProjectDetector                                                                                                                        94.5%
  JD.Efcpt.Build.Tasks.StageEfcptInputs                                                                                                                          95.7%
  System.Text.RegularExpressions.Generated                                                                                                                       80.3%
  System.Text.RegularExpressions.Generated.<RegexGenerator_g>F9F9425F6F5E055E5C6489D8E6FA46DE135B3C69D9A15B4CBA235D8D2417FD2EC__AssemblySymbolsMetadataRegex_1   86.2%
  System.Text.RegularExpressions.Generated.<RegexGenerator_g>F9F9425F6F5E055E5C6489D8E6FA46DE135B3C69D9A15B4CBA235D8D2417FD2EC__DatabaseKeywordRegex_4           75.7%
  System.Text.RegularExpressions.Generated.<RegexGenerator_g>F9F9425F6F5E055E5C6489D8E6FA46DE135B3C69D9A15B4CBA235D8D2417FD2EC__DataSourceKeywordRegex_6         72.3%
  System.Text.RegularExpressions.Generated.<RegexGenerator_g>F9F9425F6F5E055E5C6489D8E6FA46DE135B3C69D9A15B4CBA235D8D2417FD2EC__FileNameMetadataRegex_0          86.2%
  System.Text.RegularExpressions.Generated.<RegexGenerator_g>F9F9425F6F5E055E5C6489D8E6FA46DE135B3C69D9A15B4CBA235D8D2417FD2EC__InitialCatalogKeywordRegex_5     71.2%
  System.Text.RegularExpressions.Generated.<RegexGenerator_g>F9F9425F6F5E055E5C6489D8E6FA46DE135B3C69D9A15B4CBA235D8D2417FD2EC__NonLetterRegex_2                  100%
  System.Text.RegularExpressions.Generated.<RegexGenerator_g>F9F9425F6F5E055E5C6489D8E6FA46DE135B3C69D9A15B4CBA235D8D2417FD2EC__SolutionProjectLineRegex_7       82.5%
  System.Text.RegularExpressions.Generated.<RegexGenerator_g>F9F9425F6F5E055E5C6489D8E6FA46DE135B3C69D9A15B4CBA235D8D2417FD2EC__TrailingDigitsRegex_3            95.2%

@JerrettDavis JerrettDavis merged commit 826e9d1 into main Jul 11, 2026
14 checks passed
@JerrettDavis JerrettDavis deleted the feat/182-vs-extension branch July 11, 2026 21:04
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Add Visual Studio extension for build-time UI and on-demand regeneration

1 participant