From 142f38484aafbdf16ef1cd6e4e2b2dc88a046e35 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 5 Jan 2026 01:49:05 +0000 Subject: [PATCH 1/5] Initial plan From 71689d1c57e971efda9fa2a2fab754bdf90b98ea Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 5 Jan 2026 01:59:29 +0000 Subject: [PATCH 2/5] Refactor SQL project detection to prioritize SDK attribute Co-authored-by: JerrettDavis <2610199+JerrettDavis@users.noreply.github.com> --- .../database-first-sql-generation/README.md | 6 ++-- .../buildTransitive/JD.Efcpt.Build.targets | 35 +++++++++++++------ 2 files changed, 27 insertions(+), 14 deletions(-) diff --git a/samples/database-first-sql-generation/README.md b/samples/database-first-sql-generation/README.md index eda279d..78c9b0d 100644 --- a/samples/database-first-sql-generation/README.md +++ b/samples/database-first-sql-generation/README.md @@ -81,10 +81,10 @@ database-first-sql-generation/ ### Automatic Detection -JD.Efcpt.Build uses MSBuild properties to detect SQL projects: +JD.Efcpt.Build detects SQL projects by checking the project file's SDK attribute: -- **Microsoft.Build.Sql**: Checks for `$(DSP)` property -- **MSBuild.Sdk.SqlProj**: Checks for `$(SqlServerVersion)` property +- **SDK-based projects**: Checks if the `Sdk` attribute contains `Microsoft.Build.Sql` or `MSBuild.Sdk.SqlProj` +- **Legacy SSDT projects**: Falls back to checking MSBuild properties (`$(DSP)` or `$(SqlServerVersion)`) When detected, it runs SQL generation instead of EF Core generation. diff --git a/src/JD.Efcpt.Build/buildTransitive/JD.Efcpt.Build.targets b/src/JD.Efcpt.Build/buildTransitive/JD.Efcpt.Build.targets index 5c1d5c5..341a430 100644 --- a/src/JD.Efcpt.Build/buildTransitive/JD.Efcpt.Build.targets +++ b/src/JD.Efcpt.Build/buildTransitive/JD.Efcpt.Build.targets @@ -10,20 +10,33 @@ true false + - - <_EfcptIsSqlProject Condition="'$(_EfcptIsSqlProject)'=='' and ('$(SqlServerVersion)' != '' or '$(DSP)' != '')">true - <_EfcptIsSqlProject Condition="'$(_EfcptIsSqlProject)'==''">false - + This must be in the targets file (not props) because SDK properties like SqlServerVersion + are not available when props files are evaluated. + --> + + + + <_EfcptProjectContent Condition="Exists('$(MSBuildProjectFullPath)')">$([System.IO.File]::ReadAllText('$(MSBuildProjectFullPath)')) + + + <_EfcptHasMicrosoftBuildSql Condition="$(_EfcptProjectContent.Contains('Microsoft.Build.Sql'))">true + <_EfcptHasMSBuildSdkSqlProj Condition="$(_EfcptProjectContent.Contains('MSBuild.Sdk.SqlProj'))">true + + + <_EfcptIsSqlProject Condition="'$(_EfcptIsSqlProject)'=='' and ('$(_EfcptHasMicrosoftBuildSql)' == 'true' or '$(_EfcptHasMSBuildSdkSqlProj)' == 'true')">true + <_EfcptIsSqlProject Condition="'$(_EfcptIsSqlProject)'=='' and ('$(SqlServerVersion)' != '' or '$(DSP)' != '')">true + <_EfcptIsSqlProject Condition="'$(_EfcptIsSqlProject)'==''">false + + - + + + + + + - - <_EfcptProjectContent Condition="Exists('$(MSBuildProjectFullPath)')">$([System.IO.File]::ReadAllText('$(MSBuildProjectFullPath)')) - - - <_EfcptHasMicrosoftBuildSql Condition="$(_EfcptProjectContent.Contains('Microsoft.Build.Sql'))">true - <_EfcptHasMSBuildSdkSqlProj Condition="$(_EfcptProjectContent.Contains('MSBuild.Sdk.SqlProj'))">true - - - <_EfcptIsSqlProject Condition="'$(_EfcptIsSqlProject)'=='' and ('$(_EfcptHasMicrosoftBuildSql)' == 'true' or '$(_EfcptHasMSBuildSdkSqlProj)' == 'true')">true - <_EfcptIsSqlProject Condition="'$(_EfcptIsSqlProject)'=='' and ('$(SqlServerVersion)' != '' or '$(DSP)' != '')">true <_EfcptIsSqlProject Condition="'$(_EfcptIsSqlProject)'==''">false From c1c621fe38e83f2371abf35d941096ecceda619e Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 5 Jan 2026 02:05:02 +0000 Subject: [PATCH 4/5] Register DetectSqlProject task with UsingTask declaration Co-authored-by: JerrettDavis <2610199+JerrettDavis@users.noreply.github.com> --- src/JD.Efcpt.Build/buildTransitive/JD.Efcpt.Build.targets | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/JD.Efcpt.Build/buildTransitive/JD.Efcpt.Build.targets b/src/JD.Efcpt.Build/buildTransitive/JD.Efcpt.Build.targets index 6045daa..1a92c8b 100644 --- a/src/JD.Efcpt.Build/buildTransitive/JD.Efcpt.Build.targets +++ b/src/JD.Efcpt.Build/buildTransitive/JD.Efcpt.Build.targets @@ -128,6 +128,9 @@ + + + <_EfcptIsSqlProject Condition="'$(_EfcptIsSqlProject)'==''">false