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 + + + + + + + + + + + + +