Skip to content
Merged
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
2 changes: 1 addition & 1 deletion src/Benchmarks/ReactiveUI.Benchmarks.csproj
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<IsPackable>false</IsPackable>
<TargetFrameworks>net8.0</TargetFrameworks>
<TargetFrameworks>$(ReactiveUIModernTargets)</TargetFrameworks>
<PlatformTarget>AnyCPU</PlatformTarget>
<OutputType>Exe</OutputType>
<NoWarn>;1591;1701;1702;1705;CA1822</NoWarn>
Expand Down
45 changes: 45 additions & 0 deletions src/Directory.Build.props
Original file line number Diff line number Diff line change
Expand Up @@ -32,9 +32,54 @@
<EmbedUntrackedSources>true</EmbedUntrackedSources>
<IncludePackageReferencesDuringMarkupCompilation>true</IncludePackageReferencesDuringMarkupCompilation>
<PublishRepositoryUrl>true</PublishRepositoryUrl>
<!-- Legacy properties maintained for compatibility -->
<WindowsTargetFrameworks>net462;net472;net8.0-windows10.0.17763.0;net9.0-windows10.0.17763.0;net8.0-windows10.0.19041.0;net9.0-windows10.0.19041.0</WindowsTargetFrameworks>
<MobileTargetFrameworks>net8.0-android;net8.0-ios;net8.0-tvos;net8.0-macos;net8.0-maccatalyst;net9.0-android;net9.0-ios;net9.0-tvos;net9.0-macos;net9.0-maccatalyst</MobileTargetFrameworks>
<BaseTargetFrameworks>netstandard2.0;net8.0;net9.0</BaseTargetFrameworks>

<!-- Granular Target Framework definitions for cross-platform builds -->
<ReactiveUICoreTargets>netstandard2.0;net8.0;net9.0</ReactiveUICoreTargets>
<ReactiveUIAndroidTargets>net9.0-android</ReactiveUIAndroidTargets>

<!-- Platform-specific targets - always defined but only used on supported platforms -->
<ReactiveUIFrameworkTargets>net462;net472</ReactiveUIFrameworkTargets>
<ReactiveUIWindowsTargets>net8.0-windows10.0.17763.0;net9.0-windows10.0.17763.0;net8.0-windows10.0.19041.0;net9.0-windows10.0.19041.0</ReactiveUIWindowsTargets>
<ReactiveUIWinUITargets>net8.0-windows10.0.19041.0;net9.0-windows10.0.19041.0</ReactiveUIWinUITargets>
<ReactiveUIAppleTargets>net9.0-ios;net9.0-tvos;net9.0-macos;net9.0-maccatalyst</ReactiveUIAppleTargets>

<!-- Windows-only targets (combines Framework + Windows targets) - conditioned -->
<ReactiveUIWindowsOnlyTargets Condition="'$(IsWindows)' == 'true'">$(ReactiveUIFrameworkTargets);$(ReactiveUIWindowsTargets)</ReactiveUIWindowsOnlyTargets>
<ReactiveUIWindowsOnlyTargets Condition="'$(IsWindows)' != 'true'">$(ReactiveUIWindowsTargets)</ReactiveUIWindowsOnlyTargets>

<!-- Cross-platform platform detection properties for project-level conditional building -->
<IsWindows>$([MSBuild]::IsOsPlatform('Windows'))</IsWindows>
<IsMacOS>$([MSBuild]::IsOsPlatform('OSX'))</IsMacOS>
<IsLinux>$([MSBuild]::IsOsPlatform('Linux'))</IsLinux>

<!-- Modern targets for tests and benchmarks (no netstandard) -->
<ReactiveUIModernTargets>net8.0;net9.0</ReactiveUIModernTargets>

<!-- Enable building Windows-specific targets on non-Windows platforms -->
<EnableWindowsTargeting>true</EnableWindowsTargeting>
</PropertyGroup>

<!-- Build final target framework list based on operating system -->
<PropertyGroup>
<!-- Start with core targets available on all platforms -->
<ReactiveUIFinalTargetFrameworks>$(ReactiveUICoreTargets)</ReactiveUIFinalTargetFrameworks>

<!-- Add Android targets (available on all platforms with Android SDK) -->
<ReactiveUIFinalTargetFrameworks>$(ReactiveUIFinalTargetFrameworks);$(ReactiveUIAndroidTargets)</ReactiveUIFinalTargetFrameworks>

<!-- Add Windows-specific targets (.NET Framework and Windows-specific TFMs) on Windows -->
<ReactiveUIFinalTargetFrameworks Condition="$([MSBuild]::IsOsPlatform('Windows'))">$(ReactiveUIFinalTargetFrameworks);$(ReactiveUIFrameworkTargets);$(ReactiveUIWindowsTargets)</ReactiveUIFinalTargetFrameworks>

<!-- Add Apple targets on macOS and Windows -->
<ReactiveUIFinalTargetFrameworks Condition="$([MSBuild]::IsOsPlatform('Windows')) or $([MSBuild]::IsOsPlatform('OSX'))">$(ReactiveUIFinalTargetFrameworks);$(ReactiveUIAppleTargets)</ReactiveUIFinalTargetFrameworks>

<!-- Final target frameworks for tests/benchmarks (modern .NET only, with platform-specific additions) -->
<ReactiveUIFinalModernTargetFrameworks>$(ReactiveUIModernTargets)</ReactiveUIFinalModernTargetFrameworks>
<ReactiveUIFinalModernTargetFrameworks Condition="$([MSBuild]::IsOsPlatform('Windows'))">$(ReactiveUIFinalModernTargetFrameworks);net472;$(ReactiveUIWindowsTargets)</ReactiveUIFinalModernTargetFrameworks>
<!-- Ensure all test runs use our runsettings to control cross-assembly parallelism -->
<RunSettingsFilePath>$(MSBuildThisFileDirectory)tests.runsettings</RunSettingsFilePath>
</PropertyGroup>
Expand Down
2 changes: 1 addition & 1 deletion src/ReactiveUI.AndroidX/ReactiveUI.AndroidX.csproj
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFrameworks>net8.0-android</TargetFrameworks>
<TargetFrameworks>$(ReactiveUIAndroidTargets)</TargetFrameworks>
<PackageDescription>Provides ReactiveUI extensions for the AndroidX Library</PackageDescription>
<PackageId>ReactiveUI.AndroidX</PackageId>
<PackageTags>mvvm;reactiveui;rx;reactive extensions;observable;LINQ;events;frp;xamarin;androidx;forms;xamarin.androidx;net;</PackageTags>
Expand Down
2 changes: 1 addition & 1 deletion src/ReactiveUI.Blazor/ReactiveUI.Blazor.csproj
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFrameworks>$(BaseTargetFrameworks)</TargetFrameworks>
<TargetFrameworks>$(ReactiveUICoreTargets)</TargetFrameworks>
<PackageDescription>Contains the ReactiveUI platform specific extensions for Blazor</PackageDescription>
<PackageTags>mvvm;reactiveui;rx;reactive extensions;observable;LINQ;eventsnet;netstandard;blazor;web;</PackageTags>
<NoWarn>$(NoWarn);BL0007;</NoWarn>
Expand Down
4 changes: 2 additions & 2 deletions src/ReactiveUI.Blend/ReactiveUI.Blend.csproj
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<Project Sdk="Microsoft.NET.Sdk">
<Project Sdk="Microsoft.NET.Sdk" Condition="'$(IsWindows)' == 'true'">
<PropertyGroup>
<TargetFrameworks>$(WindowsTargetFrameworks)</TargetFrameworks>
<TargetFrameworks>$(ReactiveUIWindowsOnlyTargets)</TargetFrameworks>
<AssemblyName>ReactiveUI.Blend</AssemblyName>
<RootNamespace>ReactiveUI.Blend</RootNamespace>
<PackageDescription>Provides reactive extensions based xaml components based on the Blend SDK library, allowing you to fire a observable from XAML</PackageDescription>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFrameworks>net8.0;net9.0;net8.0-windows10.0.19041.0;net9.0-windows10.0.19041.0</TargetFrameworks>
<TargetFrameworks>$(ReactiveUIFinalModernTargetFrameworks)</TargetFrameworks>
<UseMaui>true</UseMaui>
<NoWarn>$(NoWarn);CS1591;SA1600</NoWarn>
<IsPackable>false</IsPackable>
Expand Down
3 changes: 1 addition & 2 deletions src/ReactiveUI.Builder.Tests/ReactiveUI.Builder.Tests.csproj
Original file line number Diff line number Diff line change
@@ -1,8 +1,7 @@
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<TargetFrameworks>net8.0;net9.0</TargetFrameworks>
<TargetFrameworks Condition=" '$(OS)' == 'Windows_NT' ">net8.0-windows10.0.17763.0;net9.0-windows10.0.17763.0</TargetFrameworks>
<TargetFrameworks>$(ReactiveUIFinalModernTargetFrameworks)</TargetFrameworks>
<NoWarn>$(NoWarn);CS1591</NoWarn>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
<Project Sdk="Microsoft.NET.Sdk">
<Project Sdk="Microsoft.NET.Sdk" Condition="'$(IsWindows)' == 'true'">

<PropertyGroup>
<OutputType>WinExe</OutputType>
Expand Down
3 changes: 1 addition & 2 deletions src/ReactiveUI.Drawing/ReactiveUI.Drawing.csproj
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFrameworks>netstandard2.0;$(MobileTargetFrameworks)</TargetFrameworks>
<TargetFrameworks Condition=" '$(OS)' == 'Windows_NT' ">$(TargetFrameworks);$(WindowsTargetFrameworks)</TargetFrameworks>
<TargetFrameworks>$(ReactiveUIFinalTargetFrameworks)</TargetFrameworks>
<AssemblyName>ReactiveUI.Drawing</AssemblyName>
<RootNamespace>ReactiveUI.Drawing</RootNamespace>
<PackageDescription>A extension to the ReactiveUI platform that provides Splat bitmap operation support.</PackageDescription>
Expand Down
2 changes: 1 addition & 1 deletion src/ReactiveUI.Drawing/Registrations.cs
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ public void Register(Action<Func<object>, Type> registerFunction)
throw new ArgumentNullException(nameof(registerFunction));
}

#if !NETSTANDARD && !NETCOREAPP2_0
#if NETFRAMEWORK || (NET5_0_OR_GREATER && WINDOWS)
registerFunction(() => new PlatformBitmapLoader(), typeof(IBitmapLoader));
#endif
}
Expand Down
2 changes: 1 addition & 1 deletion src/ReactiveUI.LeakTests/ReactiveUI.LeakTests.csproj
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFrameworks>net472;net9.0</TargetFrameworks>
<TargetFrameworks>$(ReactiveUIFinalModernTargetFrameworks)</TargetFrameworks>
<IsPackable>false</IsPackable>
</PropertyGroup>
<ItemGroup>
Expand Down
4 changes: 2 additions & 2 deletions src/ReactiveUI.Maui/ReactiveUI.Maui.csproj
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFrameworks>net8.0;net9.0</TargetFrameworks>
<TargetFrameworks Condition="$([MSBuild]::IsOSPlatform('windows'))">$(TargetFrameworks);net8.0-windows10.0.19041.0;net9.0-windows10.0.19041.0</TargetFrameworks>
<TargetFrameworks>$(ReactiveUIModernTargets)</TargetFrameworks>
<TargetFrameworks Condition="$([MSBuild]::IsOSPlatform('windows'))">$(TargetFrameworks);$(ReactiveUIWinUITargets)</TargetFrameworks>
<PackageDescription>Contains the ReactiveUI platform specific extensions for Microsoft Maui</PackageDescription>
<PackageTags>mvvm;reactiveui;rx;reactive extensions;observable;LINQ;events;frp;maui;android;ios;mac;windows;net</PackageTags>
<UseMaui>true</UseMaui>
Expand Down
2 changes: 1 addition & 1 deletion src/ReactiveUI.Splat.Tests/ReactiveUI.Splat.Tests.csproj
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFrameworks>net472;net9.0</TargetFrameworks>
<TargetFrameworks>$(ReactiveUIFinalModernTargetFrameworks)</TargetFrameworks>
<IsPackable>false</IsPackable>
</PropertyGroup>
<ItemGroup>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFrameworks>net472;net9.0</TargetFrameworks>
<TargetFrameworks>$(ReactiveUIFinalModernTargetFrameworks)</TargetFrameworks>
<FodyTargetFramework>netstandard2.0</FodyTargetFramework>
<FodyTargetFramework Condition=" $(TargetFramework.StartsWith('net4')) ">$(TargetFramework)</FodyTargetFramework>
</PropertyGroup>
Expand Down
3 changes: 1 addition & 2 deletions src/ReactiveUI.Testing/ReactiveUI.Testing.csproj
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFrameworks>$(BaseTargetFrameworks)</TargetFrameworks>
<TargetFrameworks Condition=" '$(OS)' == 'Windows_NT' ">$(TargetFrameworks);net472</TargetFrameworks>
<TargetFrameworks>$(ReactiveUIFinalModernTargetFrameworks)</TargetFrameworks>
<AssemblyName>ReactiveUI.Testing</AssemblyName>
<RootNamespace>ReactiveUI.Testing</RootNamespace>
<PackageDescription>Provides extensions for testing ReactiveUI based applications</PackageDescription>
Expand Down
4 changes: 2 additions & 2 deletions src/ReactiveUI.Tests/ReactiveUI.Tests.csproj
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFrameworks>net8.0;net9.0</TargetFrameworks>
<TargetFrameworks Condition=" '$(OS)' == 'Windows_NT' ">net472;net8.0-windows10.0.17763.0;net9.0-windows10.0.17763.0</TargetFrameworks>
<TargetFrameworks Condition="'$(IsWindows)' == 'true'">$(ReactiveUIFinalModernTargetFrameworks)</TargetFrameworks>
<TargetFrameworks Condition="'$(IsWindows)' != 'true'"></TargetFrameworks>
<NoWarn>$(NoWarn);CS1591</NoWarn>
</PropertyGroup>
<ItemGroup>
Expand Down
4 changes: 2 additions & 2 deletions src/ReactiveUI.WinUI/ReactiveUI.WinUI.csproj
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<Project Sdk="Microsoft.NET.Sdk">
<Project Sdk="Microsoft.NET.Sdk" Condition="'$(IsWindows)' == 'true'">
<PropertyGroup>
<TargetFrameworks>net8.0-windows10.0.19041.0;net9.0-windows10.0.19041.0</TargetFrameworks>
<TargetFrameworks>$(ReactiveUIWinUITargets)</TargetFrameworks>
<TargetPlatformMinVersion>10.0.19041.0</TargetPlatformMinVersion>
<PackageDescription>Contains the ReactiveUI platform specific extensions for WinUI Desktop</PackageDescription>
<RootNamespace>ReactiveUI.WinUI.Desktop</RootNamespace>
Expand Down
4 changes: 2 additions & 2 deletions src/ReactiveUI.Winforms/ReactiveUI.Winforms.csproj
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
<Project Sdk="Microsoft.NET.Sdk">
<Project Sdk="Microsoft.NET.Sdk" Condition="'$(IsWindows)' == 'true'">
<!--
Added 19041 target as a workaround for System.Reactive targeting net5.0-windows10.0.19041.0
When 19041 is selected by the end user it causes the ControlScheduler in System.Reactive to be exposed and used.
-->
<PropertyGroup>
<TargetFrameworks>$(WindowsTargetFrameworks)</TargetFrameworks>
<TargetFrameworks>$(ReactiveUIWindowsOnlyTargets)</TargetFrameworks>
<AssemblyName>ReactiveUI.Winforms</AssemblyName>
<RootNamespace>ReactiveUI.Winforms</RootNamespace>
<PackageDescription>Contains the ReactiveUI platform specific extensions for Windows Forms</PackageDescription>
Expand Down
4 changes: 2 additions & 2 deletions src/ReactiveUI.Wpf/ReactiveUI.Wpf.csproj
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
<Project Sdk="Microsoft.NET.Sdk">
<Project Sdk="Microsoft.NET.Sdk" Condition="'$(IsWindows)' == 'true'">
<PropertyGroup>
<!--
Added 19041 target as a workaround for System.Reactive targeting net5.0-windows10.0.19041.0
When 19041 is selected by the end user it causes the DispatcherScheduler in System.Reactive to be exposed and used.
-->
<TargetFrameworks>$(WindowsTargetFrameworks)</TargetFrameworks>
<TargetFrameworks>$(ReactiveUIWindowsOnlyTargets)</TargetFrameworks>
<PackageDescription>Contains the ReactiveUI platform specific extensions for Windows Presentation Foundation (WPF)</PackageDescription>
<PackageId>ReactiveUI.WPF</PackageId>
<UseWpf>true</UseWpf>
Expand Down
3 changes: 1 addition & 2 deletions src/ReactiveUI/ReactiveUI.csproj
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFrameworks>$(BaseTargetFrameworks);$(MobileTargetFrameworks)</TargetFrameworks>
<TargetFrameworks Condition=" '$(OS)' == 'Windows_NT' ">$(TargetFrameworks);$(WindowsTargetFrameworks)</TargetFrameworks>
<TargetFrameworks>$(ReactiveUIFinalTargetFrameworks)</TargetFrameworks>
<AssemblyName>ReactiveUI</AssemblyName>
<RootNamespace>ReactiveUI</RootNamespace>
<PackageDescription>A MVVM framework that integrates with the Reactive Extensions for .NET to create elegant, testable User Interfaces that run on any mobile or desktop platform. This is the base package with the base platform implementations</PackageDescription>
Expand Down
Loading