diff --git a/src/FSharp.Build/Microsoft.FSharp.Core.NetSdk.props b/src/FSharp.Build/Microsoft.FSharp.Core.NetSdk.props
index 682dff8b1c2..faf65948eda 100644
--- a/src/FSharp.Build/Microsoft.FSharp.Core.NetSdk.props
+++ b/src/FSharp.Build/Microsoft.FSharp.Core.NetSdk.props
@@ -20,10 +20,14 @@ WARNING: DO NOT MODIFY this file unless you are knowledgeable about MSBuild and
$(MSBuildAllProjects);$(MSBuildThisFileFullPath)
-
- <_FSCorePackageVersionSet>true
+
+ true
{{FSCorePackageVersionValue}}
<_FSharpCoreLibraryPacksFolder Condition="'$(_FSharpCoreLibraryPacksFolder)' == ''">$([MSBuild]::EnsureTrailingSlash('$(MSBuildThisFileDirectory)'))library-packs
+
+ $([System.Version]::Parse('$(FSCorePackageVersion.Split('-')[0])').Major)
+
+
diff --git a/src/FSharp.Build/Microsoft.FSharp.NetSdk.targets b/src/FSharp.Build/Microsoft.FSharp.NetSdk.targets
index 292c55766a8..3761a84fad5 100644
--- a/src/FSharp.Build/Microsoft.FSharp.NetSdk.targets
+++ b/src/FSharp.Build/Microsoft.FSharp.NetSdk.targets
@@ -219,4 +219,29 @@ WARNING: DO NOT MODIFY this file unless you are knowledgeable about MSBuild and
@(_TopLevelSourceRoot->'%(EscapedKey)=%(EscapedValue)', ','),$(PathMap)
+
+
+
+
+
+ <_ResolvedFSharpCore Include="@(ReferencePath)"
+ Condition="'%(ReferencePath.NuGetPackageId)' == 'FSharp.Core'" />
+
+
+
+ <_ResolvedFSharpCoreVersion>@(_ResolvedFSharpCore->'%(NuGetPackageVersion)')
+ <_ResolvedFSharpCoreMajor>$([System.Version]::Parse('$(_ResolvedFSharpCoreVersion.Split('-')[0])').Major)
+ <_FSharpCoreVersionTooHigh Condition="$(_ResolvedFSharpCoreMajor) > $(FSharpCoreMaximumMajorVersion)">true
+
+
+
+
+
diff --git a/tests/fsharp/SDKTests/tests/FSharpCoreVersion - HigherVersionWarns.proj b/tests/fsharp/SDKTests/tests/FSharpCoreVersion - HigherVersionWarns.proj
new file mode 100644
index 00000000000..9ba2d029328
--- /dev/null
+++ b/tests/fsharp/SDKTests/tests/FSharpCoreVersion - HigherVersionWarns.proj
@@ -0,0 +1,12 @@
+
+
+ 8.0.100
+
+
+
+ 9.0.0
+ 8
+ true
+
+
+
diff --git a/tests/fsharp/SDKTests/tests/FSharpCoreVersion - LowerVersionNoWarning.proj b/tests/fsharp/SDKTests/tests/FSharpCoreVersion - LowerVersionNoWarning.proj
new file mode 100644
index 00000000000..8ca4e3e34f2
--- /dev/null
+++ b/tests/fsharp/SDKTests/tests/FSharpCoreVersion - LowerVersionNoWarning.proj
@@ -0,0 +1,12 @@
+
+
+ 9.0.100
+
+
+
+ 8.0.100
+ 9
+ false
+
+
+
diff --git a/tests/fsharp/SDKTests/tests/FSharpCoreVersion - PrereleaseParsing.proj b/tests/fsharp/SDKTests/tests/FSharpCoreVersion - PrereleaseParsing.proj
new file mode 100644
index 00000000000..a01769c225a
--- /dev/null
+++ b/tests/fsharp/SDKTests/tests/FSharpCoreVersion - PrereleaseParsing.proj
@@ -0,0 +1,12 @@
+
+
+ 9.0.100-preview.1
+
+
+
+ 10.0.0-beta.1
+ 9
+ true
+
+
+
diff --git a/tests/fsharp/SDKTests/tests/FSharpCoreVersion - SameVersionNoWarning.proj b/tests/fsharp/SDKTests/tests/FSharpCoreVersion - SameVersionNoWarning.proj
new file mode 100644
index 00000000000..cc41e582443
--- /dev/null
+++ b/tests/fsharp/SDKTests/tests/FSharpCoreVersion - SameVersionNoWarning.proj
@@ -0,0 +1,12 @@
+
+
+ 9.0.100
+
+
+
+ 9.0.200
+ 9
+ false
+
+
+
diff --git a/tests/fsharp/SDKTests/tests/FSharpCoreVersionTest.props b/tests/fsharp/SDKTests/tests/FSharpCoreVersionTest.props
new file mode 100644
index 00000000000..f558553bf6a
--- /dev/null
+++ b/tests/fsharp/SDKTests/tests/FSharpCoreVersionTest.props
@@ -0,0 +1,23 @@
+
+
+
+
+
+ net10.0
+ <_TargetFrameworkVersionWithoutV>10.0
+ .NETCoreApp
+ Release
+ $(FSharpRepositoryPath)\artifacts\bin\FSharpSuite.Tests\$(Configuration)\$(TARGETFRAMEWORK)
+ AnyCPU
+ $(MSBuildThisFileDirectory)
+
+
+
+
+ $(TestFSCorePackageVersion)
+ true
+
+
+
+
+
diff --git a/tests/fsharp/SDKTests/tests/FSharpCoreVersionTest.targets b/tests/fsharp/SDKTests/tests/FSharpCoreVersionTest.targets
new file mode 100644
index 00000000000..40aa1c58ae0
--- /dev/null
+++ b/tests/fsharp/SDKTests/tests/FSharpCoreVersionTest.targets
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+
+
+
+ <_TestResolvedMajor>$([System.Version]::Parse('$(TestResolvedVersion.Split('-')[0])').Major)
+ <_TestShouldWarn Condition="$(_TestResolvedMajor) > $(FSharpCoreMaximumMajorVersion)">true
+
+
+
+
+
+
+
+
+
+
+
+
+