-
Notifications
You must be signed in to change notification settings - Fork 782
Rx 7.0 packaging changes #2268
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
Rx 7.0 packaging changes #2268
Changes from all commits
Commits
Show all changes
70 commits
Select commit
Hold shift + click to select a range
1146c96
Move UI and platform types out of System.Reactive
idg10 af836b7
Ensure Dispatcher available in test that presume it
idg10 e27c11d
Update verified API
idg10 8708edf
Add new integration package references to WindowsDesktopTests
idg10 56c6da7
Add missing s in WindowsForms
idg10 e28289b
Set version to 7.0 and update WindowsDesktopTests
idg10 23751e0
Change .Integration package names to .For
idg10 f9ce5f0
Merge main into feature/separate-ui-packages
idg10 35c735d
Fixes required now MSBuild.Extras.SDK has gone
idg10 a1159cd
Turn System.Reactive into facade
idg10 8df98cb
Hide UI types in facade reference assemblies
idg10 b7d1ca9
Use ref hiding trick to preserve System.Reactive as main package
idg10 a39e722
Update preview tag in version.json
idg10 84ff11f
Remove reference to facades\System.Reactive in test projects
idg10 d0765bb
Get correct ref assembly used in P2P refs to System.Reactive
idg10 b47c5c3
Add NuGet readme that got lost
idg10 c59ebd3
Remove frameworkReference from nuspec
idg10 d6ba782
Merge main into feature/packaging-no-facade-ref-no-ui
idg10 7098bd1
Fix integration test version numbers
idg10 ae84d52
Update ADR to reflect our current view
idg10 0f5f5b1
Further ADR clarification
idg10 8037181
Yet more ADR clarifications
idg10 502280d
Move ref assembly out of Facades folder into FrameworkIntegrations
idg10 18ff2b3
Remove duplicate PackageReferences
idg10 f634189
Fix some new analyzer diagnostics
idg10 b32eee2
Initial analyzer for recommending UI packages
idg10 ebd30e4
WPF package detection in analyzer
idg10 1e4b6a1
Basic WPF and Windows Forms missing package analyzer working
idg10 ed608d6
Add analyzer to System.Reactive package
idg10 5f6d990
Try to fix apparently spurious license header warnings
idg10 792156d
Add analyzer checks for UI dispatcher static properties
idg10 db7e9a5
Add Windows Runtime package verifier checks
idg10 ed0f980
Merge main into feature/packaging-facade-ref-no-ui
idg10 276f20b
Merge main into feature/packaging-facade-ref-noui
idg10 6a10106
Fix typo in UAP build ADR.
idg10 0773984
Renumber APIs after merge from main added existing 0004
idg10 934c3a2
Update Windows.winmd ref to 10.0.26100 for Uwp project
idg10 a16398f
More updates for Windows.winmd moving to 10.0.26100
idg10 5be94f6
Add v7 release history doc
idg10 f74c667
Remove duplicate PackageReference in ApiApprovals
idg10 86b9eb2
Move UI types back to original packages
idg10 5c87498
Merge main into packaging branch
idg10 099136f
Fix package build errors
idg10 994f408
Add readme files missed due to gitignore
idg10 4665157
Update Windows integration tests package refs
idg10 9f8c149
Fix package name error in preceding commit
idg10 555f242
Merge main into packaging branch
idg10 fe3fd6f
Merge branch 'main' into feature/packaging-endgame
idg10 5dd0d7a
Set version preview tag
idg10 29854dc
Remove legacy facade projects
idg10 f5f52af
Don't publish a nupkg for MakeRefAssemblies
idg10 e6fef03
Modify step added in previous commit to use pwsh
idg10 133d84b
Remove spurious old System.Reactive.For folders
idg10 ddafe64
Fix links to files that had been pointing to For.Uwp folder
idg10 a03f1d1
Don't make NuGet package for analyzer assembly
idg10 1a3a1c0
Update various docs from back when we were going to demote System.Rea…
idg10 43c0eff
Update release notes to reflect the packaging decisions
idg10 ca34d5b
Update package readmes
idg10 85c5957
Fix typo in release notes
idg10 610d6ef
Update package split ADR after read through
idg10 2216b99
Remove some text that still referred to System.Reactive.For.*
idg10 364e792
Remove duplicate readme in System.Reactive.Observable.Aliases
idg10 cdfc5ef
Remove spurious comma from filename
idg10 0315f5f
Remove spurious additional API compatbility suppression file
idg10 be86661
Revert unnecessary public AsyncLock Wait back to internal
idg10 5c88386
Fix comment that stated that we'd removed the UAP target
idg10 1ba55cf
Fix types in ADRs and release notes
idg10 a43c4c7
Add comment acknowledging slight size increase, and how trimming miti…
idg10 e22d361
Fix typos spotted by Copilot
idg10 874445f
Update VS 2022 ref to VS 2026
idg10 File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,49 @@ | ||
| # Rx Release History v7.0 | ||
|
|
||
| ## 7.0.0 | ||
|
|
||
| Supported on .NET 8, .NET 9, and .NET 10.0. | ||
|
|
||
| New features: | ||
|
|
||
| * Applications with a Windows-specific TFM (e.g., `net8.0-windows.10.0.19041`) can now reference the `System.Reactive` package without automatically acquiring a reference to the `Microsoft.Desktop.App` framework (which includes WPF and WinForms). If the application uses either self-contained deployment or AoT, this fixes the problem in which a reference to Rx would massively increase the size of the deployable application. | ||
|
|
||
|
|
||
| ### Breaking changes | ||
|
|
||
| * UI-framework-specific functionality now requires referencing the relevant platform-specific package: | ||
| * `System.Reactive.Windows.Forms` for Windows Forms | ||
| * `System.Reactive.Wpf` for WPF | ||
| * `System.Reactive.WindowsRuntime` for WinRT (e.g., `CoreDispatcher`) support | ||
| * If an application with a Windows-specific TFM had been relying on `System.Reactive` to acquire the `Microsoft.Desktop.App` framework dependency, it will need to add `<UseWPF>true</UseWPF>` or `<UseWindowsForms>true</UseWindowsForms>` | ||
| * Out-of-support target frameworks (.NET 6.0, .NET 7.0) no longer supported | ||
|
|
||
| Note that the packaging changes for UI-specific functionality constitute a source-level breaking change, but not a binary-level breaking change. Although the UI-framework-specific types have been removed from the public API of `System.Reactive`, they remain present at runtime. (The NuGet package has both `ref` and `lib` folders. The .NET build tools use the `ref` folder at compile time, and these types have been removed only from the `ref` assemblies. At runtime the `lib` folder is used, and the full API of `System.Reactive` v6 remains available in the assemblies in `lib`. Thus existing binaries built against Rx 6.0 that find themselves using Rx 7.0 at runtime will continue to work.) | ||
|
|
||
| `System.Reactive` has an analyzer that detects when a project has a build error because it was using UI-specific functionality that used to be in `System.Reactive` but now lives in a new package that the project does not yet reference. The analyzer produces diagnostics telling the developer what new reference they will require. | ||
|
|
||
|
|
||
| ### Deprecation of facades | ||
|
|
||
| Back in Rx 4.0 (the last time there was a major upheaval to the packaging), various NuGet packages that had previously been core components of Rx.NET were demoted to compatibility facades. These contained just type forwarders indicating that the various types they used to define have moved into `System.Reactive`. | ||
|
|
||
| These packages existed to enable code built against older versions of Rx.NET to continue to work when upgraded to Rx 4.0 or later. We have continued to build new versions of these with each subsequent version of .NET, but all that has typically changed is the exact versions in the TFMs. Nobody should be using these facades any more so there is no reason to continue to produce new ones. (And anyone who is still using the old ones can continue to do so.) | ||
|
|
||
| So we no longer produce new versions of these packages. | ||
|
|
||
| * `System.Reactive.Compatibility` | ||
| * `System.Reactive.Core` | ||
| * `System.Reactive.Experimental` | ||
| * `System.Reactive.Interfaces` | ||
| * `System.Reactive.Linq` | ||
| * `System.Reactive.PlatformServices` | ||
| * `System.Reactive.Providers` | ||
| * `System.Reactive.Runtime.Remoting` | ||
| * `System.Reactive.Windows.Threading` | ||
|
|
||
| Note that these packages were for many years facades: | ||
|
|
||
| * `System.Reactive.Windows.Forms` | ||
| * `System.Reactive.WindowsRuntime` | ||
|
|
||
| With Rx 7, these have returned to their original roles: they are now the home of Windows Forms and WinRT support in Rx. (We have not resurrected the `System.Reactive.Windows.Threading` package, because its name is a somewhat unhelpful accident of history. WPF functionality now lives in the new `System.Reactive.Wpf` component.) | ||
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.