Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
315 changes: 315 additions & 0 deletions Rx.NET/Documentation/adr/0003-multi-platform-packaging.md

Large diffs are not rendered by default.

22 changes: 22 additions & 0 deletions Rx.NET/Source/Directory.build.props
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,28 @@
<LangVersion>latest</LangVersion>
</PropertyGroup>

<PropertyGroup Condition="'$(_ExtrasSdkWithDesktopAppSupport)' == ''">
<!--
This is stuff the MS Extras SDK normally sets for us, but not all projects use it now.
This is all copied in right now. We need to work out how to make this work properly.
-->
<Configuration Condition="'$(Configuration)'==''">Debug</Configuration>
<Platform Condition="'$(Platform)'==''">AnyCPU</Platform>
<PlatformName Condition="'$(PlatformName)' == ''">$(Platform)</PlatformName>

<BaseOutputPath Condition="'$(BaseOutputPath)' == ''">bin\</BaseOutputPath>
<BaseOutputPath Condition="!HasTrailingSlash('$(BaseOutputPath)')">$(BaseOutputPath)\</BaseOutputPath>
<OutputPath Condition="'$(OutputPath)' == '' and '$(PlatformName)' == 'AnyCPU'">$(BaseOutputPath)$(Configuration)\</OutputPath>
<OutputPath Condition="'$(OutputPath)' == '' and '$(PlatformName)' != 'AnyCPU'">$(BaseOutputPath)$(PlatformName)\$(Configuration)\</OutputPath>
<OutputPath Condition="!HasTrailingSlash('$(OutputPath)')">$(OutputPath)\</OutputPath>

<BaseIntermediateOutputPath Condition="'$(BaseIntermediateOutputPath)' == ''">obj\</BaseIntermediateOutputPath>
<BaseIntermediateOutputPath Condition="!HasTrailingSlash('$(BaseIntermediateOutputPath)')">$(BaseIntermediateOutputPath)\</BaseIntermediateOutputPath>
<IntermediateOutputPath Condition=" $(IntermediateOutputPath) == '' and '$(PlatformName)' == 'AnyCPU' ">$(BaseIntermediateOutputPath)$(Configuration)\</IntermediateOutputPath>
<IntermediateOutputPath Condition=" $(IntermediateOutputPath) == '' and '$(PlatformName)' != 'AnyCPU' ">$(BaseIntermediateOutputPath)$(PlatformName)\$(Configuration)\</IntermediateOutputPath>
<IntermediateOutputPath Condition="!HasTrailingSlash('$(IntermediateOutputPath)')">$(IntermediateOutputPath)\</IntermediateOutputPath>
</PropertyGroup>

<PropertyGroup Condition="'$(Configuration)' != 'Debug'">
<IncludeSymbols>true</IncludeSymbols>
<SymbolPackageFormat>snupkg</SymbolPackageFormat>
Expand Down
475 changes: 290 additions & 185 deletions Rx.NET/Source/System.Reactive.sln

Large diffs are not rendered by default.

3 changes: 0 additions & 3 deletions Rx.NET/Source/facades/Directory.build.targets

This file was deleted.

16 changes: 0 additions & 16 deletions Rx.NET/Source/facades/GlobalAssemblyVersion.cs

This file was deleted.

4 changes: 2 additions & 2 deletions Rx.NET/Source/facades/NuGet.Facades.Readme.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
# Legacy facade package for `System.Reactive`
# Legacy facade package for `System.Reactive.Main`

This package exists for backwards compatibility, and should not be used by new applications. Older versions of the Reactive Extensions for .NET (Rx) split types across various packages including this one.

Most applications using Rx today should reference `System.Reactive` directly.
Most applications using Rx today should reference `System.Reactive.Main` directly.

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
<Project>
<Import Project="..\Directory.build.props" />
<Import Project="..\..\Directory.build.props" />
<PropertyGroup>
<GenerateAssemblyVersionAttribute>false</GenerateAssemblyVersionAttribute>
<GenerateAssemblyVersionInfo>false</GenerateAssemblyVersionInfo>
Expand Down
3 changes: 3 additions & 0 deletions Rx.NET/Source/facades/V3/Directory.build.targets
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
<Project>
<Import Project="..\..\Directory.build.targets" />
</Project>
41 changes: 41 additions & 0 deletions Rx.NET/Source/facades/V3/GlobalAssemblyVersion.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT License.
// See the LICENSE file in the project root for more information.


using System.Reflection;

// TODO: should these packages continue to have V3.0.x.0 version numbers?
// I had wanted to remove the uap10 targets from most of these, and switch back from
// MSBuild.Sdk.Extras to Microsoft.NET.Sdk, but if these are going to continue to
// claim to be V3.0 that might cause problems.
// I suppose the questions are:
// * who do we expect still to be using these packages?
// * what do we want them to get?
// These packages became nothing more than legacy facades in Rx 4.0 (shipped May 2018).
// In the 6 months since Rx 6.0 shipped, System.Reactive has had 2,043,585 downloads,
// while the System.Reactive.Linq package (which nobody should be using) has had
// 270,216 downloads! For a package nobody is meant to be using, it remains remarkably
// popular.
// So apparently people are taking dependencies on this and are ending up with the
// current version. So whatever it is they are doing today we need that to continue
// to work.
// What would go wrong if we trimmed this down to netstandard2.0 and net6.0, the same
// targets as System.Reactive.Base itself now supports?
// Perhaps what we need to do for all of these facades is ask the following question:
// Do any of the forwarded types have a different API surface area in different target?
// If no, then there should be absolutely no problem with just targetting the same as
// System.Reactive.Base. (In theory, the only problematic case would be the UWP version
// of ThreadPoolScheduler, which we've already decided to break backwards compatibility
// on as a special case, because that one on its own prevents everything else from
// moving forwards otherwise.)


#if WINDOWS_UWP
[assembly: AssemblyVersion("3.0.4000.0")]
#elif NET472 || NETSTANDARD2_0
[assembly: AssemblyVersion("3.0.6000.0")]
#else // this is here to prevent the build system from complaining. It should never be hit
[assembly: AssemblyVersion("invalid")]
#endif

Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<TargetFrameworks>netstandard2.0</TargetFrameworks>
</PropertyGroup>

<PropertyGroup>
<Description>Legacy facade for Reactive Extensions (Rx) for .NET</Description>
<PackageReadmeFile>readme.md</PackageReadmeFile>
</PropertyGroup>

<ItemGroup>
<None Include="..\..\NuGet.Facades.Readme.md" Pack="true" PackagePath="\readme.md"/>
</ItemGroup>

<ItemGroup>
<ProjectReference Include="..\..\V6\System.Reactive.Core\System.Reactive.csproj" />
</ItemGroup>

</Project>
Original file line number Diff line number Diff line change
Expand Up @@ -10,11 +10,11 @@
</PropertyGroup>

<ItemGroup>
<None Include="..\NuGet.Facades.Readme.md" Pack="true" PackagePath="\readme.md"/>
<None Include="..\..\NuGet.Facades.Readme.md" Pack="true" PackagePath="\readme.md" />
</ItemGroup>

<ItemGroup>
<ProjectReference Include="..\..\src\System.Reactive\System.Reactive.csproj" />
<ProjectReference Include="..\..\..\src\System.Reactive\System.Reactive.Base.csproj" />
</ItemGroup>

</Project>
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<TargetFrameworks>netstandard2.0</TargetFrameworks>
</PropertyGroup>

<PropertyGroup>
<Description>Legacy facade for Reactive Extensions (Rx) for .NET</Description>
<PackageReadmeFile>readme.md</PackageReadmeFile>
</PropertyGroup>

<ItemGroup>
<None Include="..\..\NuGet.Facades.Readme.md" Pack="true" PackagePath="\readme.md" />
</ItemGroup>

<ItemGroup>
<ProjectReference Include="..\..\V6\System.Reactive.Core\System.Reactive.csproj" />
</ItemGroup>

</Project>
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
<Project Sdk="MSBuild.Sdk.Extras">
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<TargetFrameworks>net472;uap10.0.18362</TargetFrameworks>
<TargetFrameworks>netstandard2.0</TargetFrameworks>
</PropertyGroup>

<PropertyGroup>
Expand All @@ -10,11 +10,11 @@
</PropertyGroup>

<ItemGroup>
<None Include="..\NuGet.Facades.Readme.md" Pack="true" PackagePath="\readme.md"/>
<None Include="..\..\NuGet.Facades.Readme.md" Pack="true" PackagePath="\readme.md" />
</ItemGroup>

<ItemGroup>
<ProjectReference Include="..\..\src\System.Reactive\System.Reactive.csproj" />
<ProjectReference Include="..\..\..\src\System.Reactive\System.Reactive.Base.csproj" />
</ItemGroup>

</Project>
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<!-- TODO: verify we do get the right platform-specific DLL for the app's chosen target. -->
<TargetFrameworks>netstandard2.0</TargetFrameworks>
</PropertyGroup>

<PropertyGroup>
<Description>Legacy facade for Reactive Extensions (Rx) for .NET</Description>
<PackageReadmeFile>readme.md</PackageReadmeFile>
</PropertyGroup>

<ItemGroup>
<None Include="..\..\NuGet.Facades.Readme.md" Pack="true" PackagePath="\readme.md" />
</ItemGroup>

<ItemGroup>
<ProjectReference Include="..\..\..\src\System.Reactive\System.Reactive.Base.csproj" />
</ItemGroup>

</Project>
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<TargetFrameworks>netstandard2.0</TargetFrameworks>
</PropertyGroup>

<PropertyGroup>
<Description>Legacy facade for Reactive Extensions (Rx) for .NET</Description>
<PackageReadmeFile>readme.md</PackageReadmeFile>
</PropertyGroup>

<ItemGroup>
<None Include="..\..\NuGet.Facades.Readme.md" Pack="true" PackagePath="\readme.md" />
</ItemGroup>

<ItemGroup>
<ProjectReference Include="..\..\V6\System.Reactive.Core\System.Reactive.csproj" />
</ItemGroup>

</Project>
Original file line number Diff line number Diff line change
Expand Up @@ -10,11 +10,11 @@
</PropertyGroup>

<ItemGroup>
<None Include="..\NuGet.Facades.Readme.md" Pack="true" PackagePath="\readme.md"/>
<None Include="..\..\NuGet.Facades.Readme.md" Pack="true" PackagePath="\readme.md" />
</ItemGroup>

<ItemGroup>
<ProjectReference Include="..\..\src\System.Reactive\System.Reactive.csproj" />
<ProjectReference Include="..\..\V6\System.Reactive.Core\System.Reactive.csproj" />
</ItemGroup>

</Project>
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT License.
// See the LICENSE file in the project root for more information.

// TODO: should we:
// 1. Move this type back out into this assembly, reinstating this as a proper package, not a facade
// 2. Add a new System.Reactive.Integration.Remoting for this.
// 3. Leave it in the V6 System.Reactive facade, since that's where existing dependents will already expect it to be.
// (Currently on 3.)
[assembly:System.Runtime.CompilerServices.TypeForwardedTo(typeof(System.Reactive.Linq.RemotingObservable))]
Loading