|
@@ -2,22 +2,109 @@
|
|
|
<!-- https://learn.microsoft.com/dotnet/fundamentals/package-validation/diagnostic-ids -->
|
|
|
<Suppressions xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
|
|
|
|
|
|
+ <!--
|
|
|
+ We deliberately exclude certain types from the reference assemblies.
|
|
|
+
|
|
|
+ Specifically, in the netX.0-windows10.0.X target, we need the runtime libraries to include the same API
|
|
|
+ surface area as System.Reactive v6.0.1, but we have to remove types that define extension methods for
|
|
|
+ IObservable<T> where those extension methods use UI-framework-specific types. For example, we don't want
|
|
|
+ the ObserveOn(Control) to be available. That's because if it _is_ visible to the compiler, it becomes impossible
|
|
|
+ to use the non-UI-specific overloads of ObserveOn without having a reference to the Microsoft.WindowsDesktop.App
|
|
|
+ framework! (So even when you aren't using the Windows Forms or WPF overloads, the compiler needs access to
|
|
|
+ the Windows Forms and WPF assemblies to be able to determine that you aren't using ObserveOn(Control) or
|
|
|
+ ObserveOn(Dispatcher).
|
|
|
+
|
|
|
+ That would make it impossible to use the System.Reactive legacy package, and also to use Rx in your app, without
|
|
|
+ also have a desktop framework dependency. And since the whole reason we're relegating System.Reactive to being
|
|
|
+ a legacy facade is to fix that very problem, this would be pointless.
|
|
|
+
|
|
|
+ So we hide all the UI-specific types from the reference assemblies for the .NET Windows-specific targets.
|
|
|
+ (We don't have to do that for .NET FX or UAP targets because if you're building for those, you already have
|
|
|
+ the relevant UI frameworks installed.)
|
|
|
+ -->
|
|
|
+ <Suppression>
|
|
|
+ <DiagnosticId>CP0001</DiagnosticId>
|
|
|
+ <Target>T:System.Reactive.Concurrency.ControlScheduler</Target>
|
|
|
+ <Left>ref/net8.0-windows10.0.19041/System.Reactive.dll</Left>
|
|
|
+ <Right>lib/net8.0-windows10.0.19041/System.Reactive.dll</Right>
|
|
|
+ </Suppression>
|
|
|
+ <Suppression>
|
|
|
+ <DiagnosticId>CP0001</DiagnosticId>
|
|
|
+ <Target>T:System.Reactive.Concurrency.CoreDispatcherScheduler</Target>
|
|
|
+ <Left>ref/net8.0-windows10.0.19041/System.Reactive.dll</Left>
|
|
|
+ <Right>lib/net8.0-windows10.0.19041/System.Reactive.dll</Right>
|
|
|
+ </Suppression>
|
|
|
+ <Suppression>
|
|
|
+ <DiagnosticId>CP0001</DiagnosticId>
|
|
|
+ <Target>T:System.Reactive.Concurrency.DispatcherScheduler</Target>
|
|
|
+ <Left>ref/net8.0-windows10.0.19041/System.Reactive.dll</Left>
|
|
|
+ <Right>lib/net8.0-windows10.0.19041/System.Reactive.dll</Right>
|
|
|
+ </Suppression>
|
|
|
+ <Suppression>
|
|
|
+ <DiagnosticId>CP0001</DiagnosticId>
|
|
|
+ <Target>T:System.Reactive.Linq.AsyncInfoObservable</Target>
|
|
|
+ <Left>ref/net8.0-windows10.0.19041/System.Reactive.dll</Left>
|
|
|
+ <Right>lib/net8.0-windows10.0.19041/System.Reactive.dll</Right>
|
|
|
+ </Suppression>
|
|
|
+ <Suppression>
|
|
|
+ <DiagnosticId>CP0001</DiagnosticId>
|
|
|
+ <Target>T:System.Reactive.Linq.ControlObservable</Target>
|
|
|
+ <Left>ref/net8.0-windows10.0.19041/System.Reactive.dll</Left>
|
|
|
+ <Right>lib/net8.0-windows10.0.19041/System.Reactive.dll</Right>
|
|
|
+ </Suppression>
|
|
|
+ <Suppression>
|
|
|
+ <DiagnosticId>CP0001</DiagnosticId>
|
|
|
+ <Target>T:System.Reactive.Linq.CoreDispatcherObservable</Target>
|
|
|
+ <Left>ref/net8.0-windows10.0.19041/System.Reactive.dll</Left>
|
|
|
+ <Right>lib/net8.0-windows10.0.19041/System.Reactive.dll</Right>
|
|
|
+ </Suppression>
|
|
|
+ <Suppression>
|
|
|
+ <DiagnosticId>CP0001</DiagnosticId>
|
|
|
+ <Target>T:System.Reactive.Linq.DispatcherObservable</Target>
|
|
|
+ <Left>ref/net8.0-windows10.0.19041/System.Reactive.dll</Left>
|
|
|
+ <Right>lib/net8.0-windows10.0.19041/System.Reactive.dll</Right>
|
|
|
+ </Suppression>
|
|
|
+ <Suppression>
|
|
|
+ <DiagnosticId>CP0001</DiagnosticId>
|
|
|
+ <Target>T:System.Reactive.Linq.WindowsObservable</Target>
|
|
|
+ <Left>ref/net8.0-windows10.0.19041/System.Reactive.dll</Left>
|
|
|
+ <Right>lib/net8.0-windows10.0.19041/System.Reactive.dll</Right>
|
|
|
+ </Suppression>
|
|
|
+ <Suppression>
|
|
|
+ <DiagnosticId>CP0001</DiagnosticId>
|
|
|
+ <Target>T:System.Reactive.Windows.Foundation.AsyncInfoObservableExtensions</Target>
|
|
|
+ <Left>ref/net8.0-windows10.0.19041/System.Reactive.dll</Left>
|
|
|
+ <Right>lib/net8.0-windows10.0.19041/System.Reactive.dll</Right>
|
|
|
+ </Suppression>
|
|
|
+
|
|
|
<!--
|
|
|
There are various internal (same package) inconsistencies that were already in Rx 6.0, because the API surface
|
|
|
area was different across targets. There doesn't seem to be a 'baseline-only' mode, so we need to suppress
|
|
|
the various validation errors that describe differences that we must preserve for compatibility with Rx 6.0.
|
|
|
|
|
|
Essentially these all arise because netstandard2.0 is a viable target for frameworks in which other targets
|
|
|
- are better matches. (E.g., if you target net6.0-windows10-0.19041, then you can actually tell the build system
|
|
|
- to give you the .NET Standard 2.0 target of System.Reactive.dll, because you're on a runtime that supports
|
|
|
- .NET Standard 2.0. By default you'd get net6.0-windows10-0.19041 because that's a better match (a precise match
|
|
|
- in fact), but since you can override that and get the netstandard2.0 target instead, package validation sees
|
|
|
- fit to tell us all the ways in which the netstandard2.0 target differs from the net6.0-windows10-0.19041 target.
|
|
|
- Similarly, uap10.0.1836 is a framework that supports netstandard2.0, so again, the package validation tells
|
|
|
- us about the differences between the netstandard2.0 and uap10.0.18362 targets.
|
|
|
+ are better matches. An application that targets net8.0-windows10-0.19041, is able to use any netstandard2.0
|
|
|
+ library, and any of those might have been built against Rx. Since the net8.0-windows10.0.19041 target is a
|
|
|
+ better match for the app, that's the version of Rx that will be chosen, but it needs to be consistent with
|
|
|
+ the netstandard2.0 one, because other libraries might have been built against that one.
|
|
|
+
|
|
|
+ The analyzer seems a little aggressive in that not only does it require that targets that might be substituted
|
|
|
+ for the netstandard2.0 target must provide the same surface area as the netstandard2.0 target, it also requires
|
|
|
+ that they don't provide any API surface area that is not present in the netstandard2.0 target. That seems more
|
|
|
+ odd because it's not obvious why something might have been built against the net8.0-windows10.0.19041 target
|
|
|
+ only to find itself using the netstandard2.0 target at runtime.
|
|
|
+
|
|
|
+ We mostly only have inconsistencies of the second kind. (I.e., there's almost nothing in the netstandard2.0 target
|
|
|
+ that is missing from more specific targets. The one exception is that the ThreadPoolScheduler implements
|
|
|
+ ISchedulerLongRunning on all targets except uap10.0.18362.) But we have plenty of examples where the more
|
|
|
+ specific targets provide additional API surface area that is not present in the netstandard2.0 target. It seems
|
|
|
+ like there really should be a way to turn off detection of that second kind, because it's normal. (The main reason
|
|
|
+ we offer targets in addition to netstandard2.0 is to add additional features.) But if there's a setting to do this,
|
|
|
+ I've not found it.
|
|
|
|
|
|
We only care about differences between the baseline (6.0.1) and the current package, so we don't really want
|
|
|
- to hear about internal inconstencies, but apparently, suppressing them is the only option.
|
|
|
+ to hear about internal inconstencies, but apparently, suppressing them is the only option. None of the options
|
|
|
+ for turning off strict mode seem to help.
|
|
|
|
|
|
The CP0001 errors all describes types that are present in one DLL but not another.
|
|
|
-->
|
|
@@ -29,6 +116,13 @@
|
|
|
<Right>lib/netstandard2.0/System.Reactive.dll</Right>
|
|
|
<IsBaselineSuppression>true</IsBaselineSuppression>
|
|
|
</Suppression>
|
|
|
+ <Suppression>
|
|
|
+ <DiagnosticId>CP0001</DiagnosticId>
|
|
|
+ <Target>T:System.Reactive.Concurrency.ControlScheduler</Target>
|
|
|
+ <Left>lib/net6.0-windows10.0.19041/System.Reactive.dll</Left>
|
|
|
+ <Right>ref/netstandard2.0/System.Reactive.dll</Right>
|
|
|
+ <IsBaselineSuppression>true</IsBaselineSuppression>
|
|
|
+ </Suppression>
|
|
|
<Suppression>
|
|
|
<DiagnosticId>CP0001</DiagnosticId>
|
|
|
<Target>T:System.Reactive.Concurrency.CoreDispatcherScheduler</Target>
|
|
@@ -36,6 +130,13 @@
|
|
|
<Right>lib/netstandard2.0/System.Reactive.dll</Right>
|
|
|
<IsBaselineSuppression>true</IsBaselineSuppression>
|
|
|
</Suppression>
|
|
|
+ <Suppression>
|
|
|
+ <DiagnosticId>CP0001</DiagnosticId>
|
|
|
+ <Target>T:System.Reactive.Concurrency.CoreDispatcherScheduler</Target>
|
|
|
+ <Left>lib/net6.0-windows10.0.19041/System.Reactive.dll</Left>
|
|
|
+ <Right>ref/netstandard2.0/System.Reactive.dll</Right>
|
|
|
+ <IsBaselineSuppression>true</IsBaselineSuppression>
|
|
|
+ </Suppression>
|
|
|
<Suppression>
|
|
|
<DiagnosticId>CP0001</DiagnosticId>
|
|
|
<Target>T:System.Reactive.Concurrency.DispatcherScheduler</Target>
|
|
@@ -43,6 +144,13 @@
|
|
|
<Right>lib/netstandard2.0/System.Reactive.dll</Right>
|
|
|
<IsBaselineSuppression>true</IsBaselineSuppression>
|
|
|
</Suppression>
|
|
|
+ <Suppression>
|
|
|
+ <DiagnosticId>CP0001</DiagnosticId>
|
|
|
+ <Target>T:System.Reactive.Concurrency.DispatcherScheduler</Target>
|
|
|
+ <Left>lib/net6.0-windows10.0.19041/System.Reactive.dll</Left>
|
|
|
+ <Right>ref/netstandard2.0/System.Reactive.dll</Right>
|
|
|
+ <IsBaselineSuppression>true</IsBaselineSuppression>
|
|
|
+ </Suppression>
|
|
|
<Suppression>
|
|
|
<DiagnosticId>CP0001</DiagnosticId>
|
|
|
<Target>T:System.Reactive.IEventPatternSource`2</Target>
|
|
@@ -50,6 +158,13 @@
|
|
|
<Right>lib/netstandard2.0/System.Reactive.dll</Right>
|
|
|
<IsBaselineSuppression>true</IsBaselineSuppression>
|
|
|
</Suppression>
|
|
|
+ <Suppression>
|
|
|
+ <DiagnosticId>CP0001</DiagnosticId>
|
|
|
+ <Target>T:System.Reactive.IEventPatternSource`2</Target>
|
|
|
+ <Left>lib/net6.0-windows10.0.19041/System.Reactive.dll</Left>
|
|
|
+ <Right>ref/netstandard2.0/System.Reactive.dll</Right>
|
|
|
+ <IsBaselineSuppression>true</IsBaselineSuppression>
|
|
|
+ </Suppression>
|
|
|
<Suppression>
|
|
|
<DiagnosticId>CP0001</DiagnosticId>
|
|
|
<Target>T:System.Reactive.Linq.AsyncInfoObservable</Target>
|
|
@@ -57,6 +172,13 @@
|
|
|
<Right>lib/netstandard2.0/System.Reactive.dll</Right>
|
|
|
<IsBaselineSuppression>true</IsBaselineSuppression>
|
|
|
</Suppression>
|
|
|
+ <Suppression>
|
|
|
+ <DiagnosticId>CP0001</DiagnosticId>
|
|
|
+ <Target>T:System.Reactive.Linq.AsyncInfoObservable</Target>
|
|
|
+ <Left>lib/net6.0-windows10.0.19041/System.Reactive.dll</Left>
|
|
|
+ <Right>ref/netstandard2.0/System.Reactive.dll</Right>
|
|
|
+ <IsBaselineSuppression>true</IsBaselineSuppression>
|
|
|
+ </Suppression>
|
|
|
<Suppression>
|
|
|
<DiagnosticId>CP0001</DiagnosticId>
|
|
|
<Target>T:System.Reactive.Linq.ControlObservable</Target>
|
|
@@ -64,6 +186,13 @@
|
|
|
<Right>lib/netstandard2.0/System.Reactive.dll</Right>
|
|
|
<IsBaselineSuppression>true</IsBaselineSuppression>
|
|
|
</Suppression>
|
|
|
+ <Suppression>
|
|
|
+ <DiagnosticId>CP0001</DiagnosticId>
|
|
|
+ <Target>T:System.Reactive.Linq.ControlObservable</Target>
|
|
|
+ <Left>lib/net6.0-windows10.0.19041/System.Reactive.dll</Left>
|
|
|
+ <Right>ref/netstandard2.0/System.Reactive.dll</Right>
|
|
|
+ <IsBaselineSuppression>true</IsBaselineSuppression>
|
|
|
+ </Suppression>
|
|
|
<Suppression>
|
|
|
<DiagnosticId>CP0001</DiagnosticId>
|
|
|
<Target>T:System.Reactive.Linq.CoreDispatcherObservable</Target>
|
|
@@ -71,6 +200,13 @@
|
|
|
<Right>lib/netstandard2.0/System.Reactive.dll</Right>
|
|
|
<IsBaselineSuppression>true</IsBaselineSuppression>
|
|
|
</Suppression>
|
|
|
+ <Suppression>
|
|
|
+ <DiagnosticId>CP0001</DiagnosticId>
|
|
|
+ <Target>T:System.Reactive.Linq.CoreDispatcherObservable</Target>
|
|
|
+ <Left>lib/net6.0-windows10.0.19041/System.Reactive.dll</Left>
|
|
|
+ <Right>ref/netstandard2.0/System.Reactive.dll</Right>
|
|
|
+ <IsBaselineSuppression>true</IsBaselineSuppression>
|
|
|
+ </Suppression>
|
|
|
<Suppression>
|
|
|
<DiagnosticId>CP0001</DiagnosticId>
|
|
|
<Target>T:System.Reactive.Linq.DispatcherObservable</Target>
|
|
@@ -78,6 +214,13 @@
|
|
|
<Right>lib/netstandard2.0/System.Reactive.dll</Right>
|
|
|
<IsBaselineSuppression>true</IsBaselineSuppression>
|
|
|
</Suppression>
|
|
|
+ <Suppression>
|
|
|
+ <DiagnosticId>CP0001</DiagnosticId>
|
|
|
+ <Target>T:System.Reactive.Linq.DispatcherObservable</Target>
|
|
|
+ <Left>lib/net6.0-windows10.0.19041/System.Reactive.dll</Left>
|
|
|
+ <Right>ref/netstandard2.0/System.Reactive.dll</Right>
|
|
|
+ <IsBaselineSuppression>true</IsBaselineSuppression>
|
|
|
+ </Suppression>
|
|
|
<Suppression>
|
|
|
<DiagnosticId>CP0001</DiagnosticId>
|
|
|
<Target>T:System.Reactive.Linq.WindowsObservable</Target>
|
|
@@ -85,6 +228,13 @@
|
|
|
<Right>lib/netstandard2.0/System.Reactive.dll</Right>
|
|
|
<IsBaselineSuppression>true</IsBaselineSuppression>
|
|
|
</Suppression>
|
|
|
+ <Suppression>
|
|
|
+ <DiagnosticId>CP0001</DiagnosticId>
|
|
|
+ <Target>T:System.Reactive.Linq.WindowsObservable</Target>
|
|
|
+ <Left>lib/net6.0-windows10.0.19041/System.Reactive.dll</Left>
|
|
|
+ <Right>ref/netstandard2.0/System.Reactive.dll</Right>
|
|
|
+ <IsBaselineSuppression>true</IsBaselineSuppression>
|
|
|
+ </Suppression>
|
|
|
<Suppression>
|
|
|
<DiagnosticId>CP0001</DiagnosticId>
|
|
|
<Target>T:System.Reactive.Windows.Foundation.AsyncInfoObservableExtensions</Target>
|
|
@@ -92,6 +242,13 @@
|
|
|
<Right>lib/netstandard2.0/System.Reactive.dll</Right>
|
|
|
<IsBaselineSuppression>true</IsBaselineSuppression>
|
|
|
</Suppression>
|
|
|
+ <Suppression>
|
|
|
+ <DiagnosticId>CP0001</DiagnosticId>
|
|
|
+ <Target>T:System.Reactive.Windows.Foundation.AsyncInfoObservableExtensions</Target>
|
|
|
+ <Left>lib/net6.0-windows10.0.19041/System.Reactive.dll</Left>
|
|
|
+ <Right>ref/netstandard2.0/System.Reactive.dll</Right>
|
|
|
+ <IsBaselineSuppression>true</IsBaselineSuppression>
|
|
|
+ </Suppression>
|
|
|
|
|
|
|
|
|
<!--
|
|
@@ -110,8 +267,8 @@
|
|
|
<Suppression>
|
|
|
<DiagnosticId>CP0008</DiagnosticId>
|
|
|
<Target>T:System.Reactive.Concurrency.ThreadPoolScheduler</Target>
|
|
|
- <Left>lib/netstandard2.0/System.Reactive.dll</Left>
|
|
|
- <Right>lib/uap10.0.18362/System.Reactive.dll</Right>
|
|
|
+ <Left>ref/netstandard2.0/System.Reactive.dll</Left>
|
|
|
+ <Right>ref/uap10.0.18362/System.Reactive.dll</Right>
|
|
|
</Suppression>
|
|
|
|
|
|
<!--
|
|
@@ -125,8 +282,8 @@
|
|
|
<Suppression>
|
|
|
<DiagnosticId>CP0002</DiagnosticId>
|
|
|
<Target>M:System.Reactive.Concurrency.ThreadPoolScheduler.ScheduleLongRunning``1(``0,System.Action{``0,System.Reactive.Disposables.ICancelable})</Target>
|
|
|
- <Left>lib/netstandard2.0/System.Reactive.dll</Left>
|
|
|
- <Right>lib/uap10.0.18362/System.Reactive.dll</Right>
|
|
|
+ <Left>ref/netstandard2.0/System.Reactive.dll</Left>
|
|
|
+ <Right>ref/uap10.0.18362/System.Reactive.dll</Right>
|
|
|
</Suppression>
|
|
|
|
|
|
|
|
@@ -148,6 +305,13 @@
|
|
|
<Right>lib/netstandard2.0/System.Reactive.dll</Right>
|
|
|
<IsBaselineSuppression>true</IsBaselineSuppression>
|
|
|
</Suppression>
|
|
|
+ <Suppression>
|
|
|
+ <DiagnosticId>CP0008</DiagnosticId>
|
|
|
+ <Target>T:System.Reactive.NotificationKind</Target>
|
|
|
+ <Left>lib/net6.0-windows10.0.19041/System.Reactive.dll</Left>
|
|
|
+ <Right>ref/netstandard2.0/System.Reactive.dll</Right>
|
|
|
+ <IsBaselineSuppression>true</IsBaselineSuppression>
|
|
|
+ </Suppression>
|
|
|
<Suppression>
|
|
|
<DiagnosticId>CP0008</DiagnosticId>
|
|
|
<Target>T:System.Reactive.NotificationKind</Target>
|
|
@@ -155,4 +319,11 @@
|
|
|
<Right>lib/netstandard2.0/System.Reactive.dll</Right>
|
|
|
<IsBaselineSuppression>true</IsBaselineSuppression>
|
|
|
</Suppression>
|
|
|
+ <Suppression>
|
|
|
+ <DiagnosticId>CP0008</DiagnosticId>
|
|
|
+ <Target>T:System.Reactive.NotificationKind</Target>
|
|
|
+ <Left>lib/net6.0/System.Reactive.dll</Left>
|
|
|
+ <Right>ref/netstandard2.0/System.Reactive.dll</Right>
|
|
|
+ <IsBaselineSuppression>true</IsBaselineSuppression>
|
|
|
+ </Suppression>
|
|
|
</Suppressions>
|