ApiCompatSuppressions.xml 8.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <!-- https://learn.microsoft.com/dotnet/fundamentals/package-validation/diagnostic-ids -->
  3. <Suppressions xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  4. <!--
  5. There are various internal (same package) inconsistencies that were already in Rx 6.0, because the API surface
  6. area was different across targets. There doesn't seem to be a 'baseline-only' mode, so we need to suppress
  7. the various validation errors that describe differences that we must preserve for compatibility with Rx 6.0.
  8. Essentially these all arise because netstandard2.0 is a viable target for frameworks in which other targets
  9. are better matches. (E.g., if you target net6.0-windows10-0.19041, then you can actually tell the build system
  10. to give you the .NET Standard 2.0 target of System.Reactive.dll, because you're on a runtime that supports
  11. .NET Standard 2.0. By default you'd get net6.0-windows10-0.19041 because that's a better match (a precise match
  12. in fact), but since you can override that and get the netstandard2.0 target instead, package validation sees
  13. fit to tell us all the ways in which the netstandard2.0 target differs from the net6.0-windows10-0.19041 target.
  14. Similarly, uap10.0.1836 is a framework that supports netstandard2.0, so again, the package validation tells
  15. us about the differences between the netstandard2.0 and uap10.0.18362 targets.
  16. We only care about differences between the baseline (6.0.1) and the current package, so we don't really want
  17. to hear about internal inconstencies, but apparently, suppressing them is the only option.
  18. The CP0001 errors all describes types that are present in one DLL but not another.
  19. -->
  20. <Suppression>
  21. <DiagnosticId>CP0001</DiagnosticId>
  22. <Target>T:System.Reactive.Concurrency.ControlScheduler</Target>
  23. <Left>lib/net6.0-windows10.0.19041/System.Reactive.dll</Left>
  24. <Right>lib/netstandard2.0/System.Reactive.dll</Right>
  25. <IsBaselineSuppression>true</IsBaselineSuppression>
  26. </Suppression>
  27. <Suppression>
  28. <DiagnosticId>CP0001</DiagnosticId>
  29. <Target>T:System.Reactive.Concurrency.CoreDispatcherScheduler</Target>
  30. <Left>lib/net6.0-windows10.0.19041/System.Reactive.dll</Left>
  31. <Right>lib/netstandard2.0/System.Reactive.dll</Right>
  32. <IsBaselineSuppression>true</IsBaselineSuppression>
  33. </Suppression>
  34. <Suppression>
  35. <DiagnosticId>CP0001</DiagnosticId>
  36. <Target>T:System.Reactive.Concurrency.DispatcherScheduler</Target>
  37. <Left>lib/net6.0-windows10.0.19041/System.Reactive.dll</Left>
  38. <Right>lib/netstandard2.0/System.Reactive.dll</Right>
  39. <IsBaselineSuppression>true</IsBaselineSuppression>
  40. </Suppression>
  41. <Suppression>
  42. <DiagnosticId>CP0001</DiagnosticId>
  43. <Target>T:System.Reactive.IEventPatternSource`2</Target>
  44. <Left>lib/net6.0-windows10.0.19041/System.Reactive.dll</Left>
  45. <Right>lib/netstandard2.0/System.Reactive.dll</Right>
  46. <IsBaselineSuppression>true</IsBaselineSuppression>
  47. </Suppression>
  48. <Suppression>
  49. <DiagnosticId>CP0001</DiagnosticId>
  50. <Target>T:System.Reactive.Linq.AsyncInfoObservable</Target>
  51. <Left>lib/net6.0-windows10.0.19041/System.Reactive.dll</Left>
  52. <Right>lib/netstandard2.0/System.Reactive.dll</Right>
  53. <IsBaselineSuppression>true</IsBaselineSuppression>
  54. </Suppression>
  55. <Suppression>
  56. <DiagnosticId>CP0001</DiagnosticId>
  57. <Target>T:System.Reactive.Linq.ControlObservable</Target>
  58. <Left>lib/net6.0-windows10.0.19041/System.Reactive.dll</Left>
  59. <Right>lib/netstandard2.0/System.Reactive.dll</Right>
  60. <IsBaselineSuppression>true</IsBaselineSuppression>
  61. </Suppression>
  62. <Suppression>
  63. <DiagnosticId>CP0001</DiagnosticId>
  64. <Target>T:System.Reactive.Linq.CoreDispatcherObservable</Target>
  65. <Left>lib/net6.0-windows10.0.19041/System.Reactive.dll</Left>
  66. <Right>lib/netstandard2.0/System.Reactive.dll</Right>
  67. <IsBaselineSuppression>true</IsBaselineSuppression>
  68. </Suppression>
  69. <Suppression>
  70. <DiagnosticId>CP0001</DiagnosticId>
  71. <Target>T:System.Reactive.Linq.DispatcherObservable</Target>
  72. <Left>lib/net6.0-windows10.0.19041/System.Reactive.dll</Left>
  73. <Right>lib/netstandard2.0/System.Reactive.dll</Right>
  74. <IsBaselineSuppression>true</IsBaselineSuppression>
  75. </Suppression>
  76. <Suppression>
  77. <DiagnosticId>CP0001</DiagnosticId>
  78. <Target>T:System.Reactive.Linq.WindowsObservable</Target>
  79. <Left>lib/net6.0-windows10.0.19041/System.Reactive.dll</Left>
  80. <Right>lib/netstandard2.0/System.Reactive.dll</Right>
  81. <IsBaselineSuppression>true</IsBaselineSuppression>
  82. </Suppression>
  83. <Suppression>
  84. <DiagnosticId>CP0001</DiagnosticId>
  85. <Target>T:System.Reactive.Windows.Foundation.AsyncInfoObservableExtensions</Target>
  86. <Left>lib/net6.0-windows10.0.19041/System.Reactive.dll</Left>
  87. <Right>lib/netstandard2.0/System.Reactive.dll</Right>
  88. <IsBaselineSuppression>true</IsBaselineSuppression>
  89. </Suppression>
  90. <!--
  91. CP0008: Type 'System.Reactive.Concurrency.ThreadPoolScheduler' does not implement interface
  92. 'System.Reactive.Concurrency.ISchedulerLongRunning' on lib/uap10.0.18362/System.Reactive.dll but it does on
  93. lib/netstandard2.0/System.Reactive.dll
  94. This is slightly different from the CP0001 errors above, because the relevant type is present in both
  95. targets, but it is slightly different.
  96. This difference already existed in Rx 6.0. It is because when UWP first introduced its version of the
  97. ThreadPoolScheduler, it was based on the Windows Runtime thread pool, making it slightly differnt from the
  98. ThreadPoolScheduler available on all other targets. This UWP-specific scheduler has never directly supported
  99. long-running tasks.
  100. -->
  101. <Suppression>
  102. <DiagnosticId>CP0008</DiagnosticId>
  103. <Target>T:System.Reactive.Concurrency.ThreadPoolScheduler</Target>
  104. <Left>lib/netstandard2.0/System.Reactive.dll</Left>
  105. <Right>lib/uap10.0.18362/System.Reactive.dll</Right>
  106. </Suppression>
  107. <!--
  108. CP0002: Member 'System.IDisposable System.Reactive.Concurrency.ThreadPoolScheduler
  109. .ScheduleLongRunning<TState>(TState, System.Action<TState, System.Reactive.Disposables.ICancelable>)' exists
  110. on lib/netstandard2.0/System.Reactive.dll but not on lib/uap10.0.18362/System.Reactive.dll
  111. This is essentially another facet of the preceding issue: this ScheduleLongRunning method is the additional method
  112. that ISchedulerLongRunning defines. So this difference also already existed in Rx 6.0.
  113. -->
  114. <Suppression>
  115. <DiagnosticId>CP0002</DiagnosticId>
  116. <Target>M:System.Reactive.Concurrency.ThreadPoolScheduler.ScheduleLongRunning``1(``0,System.Action{``0,System.Reactive.Disposables.ICancelable})</Target>
  117. <Left>lib/netstandard2.0/System.Reactive.dll</Left>
  118. <Right>lib/uap10.0.18362/System.Reactive.dll</Right>
  119. </Suppression>
  120. <!--
  121. CP0008: Type 'System.Reactive.NotificationKind' does not implement interface
  122. 'System.Reactive.NotificationKind' on lib/uap10.0.18362/System.Reactive.dll but it does on
  123. lib/netstandard2.0/System.Reactive.dll
  124. This is slightly different from the above because it is reported as a baseline difference.
  125. .NET 6 introduced ISpanFormattable, and since .NET 8.0 all enums automatically implement it. The package validation
  126. baselining considers this to be an API difference. That's a little odd, given that there's no actual difference in
  127. the way the two targets implement the enum - it's actually a difference in the base System.Enum type.
  128. -->
  129. <Suppression>
  130. <DiagnosticId>CP0008</DiagnosticId>
  131. <Target>T:System.Reactive.NotificationKind</Target>
  132. <Left>lib/net6.0-windows10.0.19041/System.Reactive.dll</Left>
  133. <Right>lib/netstandard2.0/System.Reactive.dll</Right>
  134. <IsBaselineSuppression>true</IsBaselineSuppression>
  135. </Suppression>
  136. <Suppression>
  137. <DiagnosticId>CP0008</DiagnosticId>
  138. <Target>T:System.Reactive.NotificationKind</Target>
  139. <Left>lib/net6.0/System.Reactive.dll</Left>
  140. <Right>lib/netstandard2.0/System.Reactive.dll</Right>
  141. <IsBaselineSuppression>true</IsBaselineSuppression>
  142. </Suppression>
  143. </Suppressions>