From c538423da4632a218f507e2d416b5d0181f90999 Mon Sep 17 00:00:00 2001 From: Jon Skeet Date: Wed, 20 Mar 2024 11:16:45 +0000 Subject: [PATCH 1/3] Initial setup and release of 1.0.0 Class1 contains a void parameterless method, and an Int32-returning property. The project targets netstandard2.1. --- CompatIssue/Class1.cs | 10 ++++++++++ CompatIssue/CompatIssue.csproj | 12 ++++++++++++ CompatIssue/README.md | 2 ++ CompatIssue/global.json | 6 ++++++ 4 files changed, 30 insertions(+) create mode 100644 CompatIssue/Class1.cs create mode 100644 CompatIssue/CompatIssue.csproj create mode 100644 CompatIssue/README.md create mode 100644 CompatIssue/global.json diff --git a/CompatIssue/Class1.cs b/CompatIssue/Class1.cs new file mode 100644 index 00000000..7f7a3901 --- /dev/null +++ b/CompatIssue/Class1.cs @@ -0,0 +1,10 @@ +namespace CompatIssue; + +public class Class1 +{ + public void Method() + { + } + + public int Property => 10; +} diff --git a/CompatIssue/CompatIssue.csproj b/CompatIssue/CompatIssue.csproj new file mode 100644 index 00000000..8460ee4b --- /dev/null +++ b/CompatIssue/CompatIssue.csproj @@ -0,0 +1,12 @@ + + + + 1.0.0 + netstandard2.1 + enable + enable + latest + true + + + diff --git a/CompatIssue/README.md b/CompatIssue/README.md new file mode 100644 index 00000000..ad137f50 --- /dev/null +++ b/CompatIssue/README.md @@ -0,0 +1,2 @@ +This directory exists to demonstrate an issue with the MS compat tool. +See https://github.com/dotnet/sdk/issues/39629 for details \ No newline at end of file diff --git a/CompatIssue/global.json b/CompatIssue/global.json new file mode 100644 index 00000000..282c5a85 --- /dev/null +++ b/CompatIssue/global.json @@ -0,0 +1,6 @@ +{ + "sdk": { + "version": "8.0.203", + "rollForward": "latestFeature" + } +} \ No newline at end of file From e0065b0f117815136e388d15e9519b7c79e73e94 Mon Sep 17 00:00:00 2001 From: Jon Skeet Date: Wed, 20 Mar 2024 11:21:38 +0000 Subject: [PATCH 2/3] Add a nullable-returning property and an enum, and release 1.1.0 Note: changing the target framework to netstandard2.0 at *this* point does not cause any compatibility errors. --- CompatIssue/Class1.cs | 2 ++ CompatIssue/CompatIssue.csproj | 3 ++- CompatIssue/SampleEnum.cs | 7 +++++++ 3 files changed, 11 insertions(+), 1 deletion(-) create mode 100644 CompatIssue/SampleEnum.cs diff --git a/CompatIssue/Class1.cs b/CompatIssue/Class1.cs index 7f7a3901..7e6e5e37 100644 --- a/CompatIssue/Class1.cs +++ b/CompatIssue/Class1.cs @@ -7,4 +7,6 @@ public void Method() } public int Property => 10; + + public int? NullableProperty => 10; } diff --git a/CompatIssue/CompatIssue.csproj b/CompatIssue/CompatIssue.csproj index 8460ee4b..ffbea760 100644 --- a/CompatIssue/CompatIssue.csproj +++ b/CompatIssue/CompatIssue.csproj @@ -1,7 +1,8 @@  - 1.0.0 + 1.1.0 + 1.0.0 netstandard2.1 enable enable diff --git a/CompatIssue/SampleEnum.cs b/CompatIssue/SampleEnum.cs new file mode 100644 index 00000000..1d5de75e --- /dev/null +++ b/CompatIssue/SampleEnum.cs @@ -0,0 +1,7 @@ +namespace CompatIssue; + +public enum SampleEnum +{ + Value0, + Value1 +} From 91aa6db9d5f356ba29bbadb117a9cae257f39fb0 Mon Sep 17 00:00:00 2001 From: Jon Skeet Date: Wed, 20 Mar 2024 11:22:53 +0000 Subject: [PATCH 3/3] Change the target to netstandard2.0 and try to release 1.2.0 This fails to pack with compatibility errors: ```text error : API compatibility errors between 'lib/netstandard2.1/CompatIssue.dll' (...\packages\compatissue\1.1.0\compatissue.1.1.0.nupkg) and 'lib/netstandard2.0/CompatIssue.dll' (...\CompatIssue.csproj) error CP0002: Member 'System.Nullable CompatIssue.Class1.NullableProperty.get' exists on [Baseline] lib/netstandard2.1/CompatIssue.dll but not on lib/netstandard2.0/CompatIssue.dll [...\CompatIssue.csproj] error CP0002: Member 'CompatIssue.SampleEnum CompatIssue.SampleEnum.Value0' exists on [Baseline] lib/netstandard2.1/CompatIssue.dll but not on lib/netstandard2.0/CompatIssue.dll [...\CompatIssue.csproj] error CP0002: Member 'CompatIssue.SampleEnum CompatIssue.SampleEnum.Value1' exists on [Baseline] lib/netstandard2.1/CompatIssue.dll but not on lib/netstandard2.0/CompatIssue.dll [...\CompatIssue.csproj] ``` --- CompatIssue/CompatIssue.csproj | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/CompatIssue/CompatIssue.csproj b/CompatIssue/CompatIssue.csproj index ffbea760..4bbd7a07 100644 --- a/CompatIssue/CompatIssue.csproj +++ b/CompatIssue/CompatIssue.csproj @@ -1,9 +1,9 @@  - 1.1.0 - 1.0.0 - netstandard2.1 + 1.2.0 + 1.1.0 + netstandard2.0 enable enable latest