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