Skip to content

Commit 7beb768

Browse files
committed
Restore Uno 5.x for UWP targeting
1 parent 139b8aa commit 7beb768

23 files changed

Lines changed: 154 additions & 72 deletions

.github/workflows/build.yml

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -145,9 +145,6 @@ jobs:
145145
# WinUI 2 not supported on wasdk
146146
- winui: 2
147147
multitarget: wasdk
148-
# WinUI 2 not supported on wasm (Uno 6.x dropped Uno.UI)
149-
- winui: 2
150-
multitarget: wasm
151148
# WinUI 3 not supported on uwp
152149
- winui: 3
153150
multitarget: uwp

Build-Toolkit-Components.ps1

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -57,11 +57,11 @@
5757
Date: 2/19/2024
5858
#>
5959
Param (
60-
[ValidateSet('all', 'wasm', 'uwp', 'wasdk', 'macos', 'ios', 'android', 'netstandard')]
60+
[ValidateSet('all', 'wasm', 'uwp', 'wasdk', 'wpf', 'linuxgtk', 'macos', 'ios', 'android', 'netstandard')]
6161
[Alias("mt")]
6262
[string[]]$MultiTargets = @('uwp', 'wasm', 'wasdk'), # default settings
6363

64-
[ValidateSet('wasm', 'uwp', 'wasdk', 'macos', 'ios', 'android', 'netstandard')]
64+
[ValidateSet('wasm', 'uwp', 'wasdk', 'wpf', 'linuxgtk', 'macos', 'ios', 'android', 'netstandard')]
6565
[string[]]$ExcludeMultiTargets = @(), # default settings
6666

6767
[Alias("c")]
@@ -97,19 +97,19 @@ Param (
9797

9898

9999
if ($MultiTargets -eq 'all') {
100-
$MultiTargets = @('wasm', 'uwp', 'wasdk', 'macos', 'ios', 'android', 'netstandard')
100+
$MultiTargets = @('wasm', 'uwp', 'wasdk', 'wpf', 'linuxgtk', 'macos', 'ios', 'android', 'netstandard')
101101
}
102102

103103
if ($null -eq $ExcludeMultiTargets)
104104
{
105105
$ExcludeMultiTargets = @()
106106
}
107107

108-
# WinUI 2 only builds native UWP (Uno.UI dropped in Uno 6).
109-
# WinUI 3 excludes UWP. Both uwp and wasdk share a targetframework and cannot be enabled at once.
108+
# Both uwp and wasdk share a targetframework. Both cannot be enabled at once.
109+
# If both are supplied, remove one based on WinUIMajorVersion.
110110
if ($WinUIMajorVersion -eq 2)
111111
{
112-
$ExcludeMultiTargets = $ExcludeMultiTargets + 'wasdk' + 'wasm' + 'macos' + 'ios' + 'android'
112+
$ExcludeMultiTargets = $ExcludeMultiTargets + 'wasdk'
113113
}
114114

115115
if ($WinUIMajorVersion -eq 3)

Build-Toolkit-Gallery.ps1

Lines changed: 15 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
Specifies the MultiTarget TFM(s) to include for building the components. The default value is 'all'.
1010
1111
.PARAMETER ExcludeMultiTargets
12-
Specifies the MultiTarget TFM(s) to exclude for building the components. The default value excludes targets that require additional tooling or workloads to build. Run uno-check to install the required workloads.
12+
Specifies the MultiTarget TFM(s) to exclude for building the components. The default value excludes targets that require additional tooling or workloads to build: 'wpf', 'linuxgtk', 'macos', 'ios', and 'android'. Run uno-check to install the required workloads.
1313
1414
.PARAMETER Heads
1515
The heads to include in the build. Default is 'Uwp', 'Wasdk', 'Wasm'.
@@ -46,11 +46,11 @@
4646
Date: 2/19/2024
4747
#>
4848
Param (
49-
[ValidateSet('all', 'wasm', 'uwp', 'wasdk', 'macos', 'ios', 'android', 'netstandard')]
49+
[ValidateSet('all', 'wasm', 'uwp', 'wasdk', 'wpf', 'linuxgtk', 'macos', 'ios', 'android', 'netstandard')]
5050
[Alias("mt")]
5151
[string[]]$MultiTargets = @('uwp', 'wasdk', 'wasm'), # default settings
5252

53-
[ValidateSet('wasm', 'uwp', 'wasdk', 'macos', 'ios', 'android', 'netstandard')]
53+
[ValidateSet('wasm', 'uwp', 'wasdk', 'wpf', 'linuxgtk', 'macos', 'ios', 'android', 'netstandard')]
5454
[string[]]$ExcludeMultiTargets = @(), # default settings
5555

5656
[ValidateSet('all', 'Uwp', 'Wasdk', 'Wasm', 'Tests.Uwp', 'Tests.Wasdk')]
@@ -87,19 +87,22 @@ if ($null -eq $ExcludeMultiTargets)
8787
$ExcludeMultiTargets = @()
8888
}
8989

90-
# WinUI 2 only builds native UWP (Uno.UI dropped in Uno 6).
91-
# WinUI 3 excludes UWP. Both uwp and wasdk share a targetframework and cannot be enabled at once.
92-
if ($WinUIMajorVersion -eq 2)
90+
# Both uwp and wasdk share a targetframework. Both cannot be enabled at once.
91+
# If both are supplied, remove one based on WinUIMajorVersion.
92+
if ($MultiTargets.Contains('uwp') -and $MultiTargets.Contains('wasdk'))
9393
{
94-
$ExcludeMultiTargets = $ExcludeMultiTargets + 'wasdk' + 'wasm' + 'macos' + 'ios' + 'android'
95-
}
96-
else
97-
{
98-
$ExcludeMultiTargets = $ExcludeMultiTargets + 'uwp'
94+
if ($WinUIMajorVersion -eq 2)
95+
{
96+
$ExcludeMultiTargets = $ExcludeMultiTargets + 'wasdk'
97+
}
98+
else
99+
{
100+
$ExcludeMultiTargets = $ExcludeMultiTargets + 'uwp'
101+
}
99102
}
100103

101104
if ($MultiTargets -eq 'all') {
102-
$MultiTargets = @('wasm', 'uwp', 'wasdk', 'macos', 'ios', 'android', 'netstandard')
105+
$MultiTargets = @('wasm', 'uwp', 'wasdk', 'wpf', 'linuxgtk', 'macos', 'ios', 'android', 'netstandard')
103106
}
104107

105108
if ($ExcludeMultiTargets) {

GenerateAllSolution.ps1

Lines changed: 14 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -38,11 +38,11 @@
3838
Date: April 27, 2022
3939
#>
4040
Param (
41-
[ValidateSet('all', 'wasm', 'uwp', 'wasdk', 'macos', 'ios', 'android', 'netstandard')]
41+
[ValidateSet('all', 'wasm', 'uwp', 'wasdk', 'wpf', 'linuxgtk', 'macos', 'ios', 'android', 'netstandard')]
4242
[Alias("mt")]
4343
[string[]]$MultiTargets = @('uwp', 'wasm', 'wasdk'),
4444

45-
[ValidateSet('wasm', 'uwp', 'wasdk', 'macos', 'ios', 'android', 'netstandard')]
45+
[ValidateSet('wasm', 'uwp', 'wasdk', 'wpf', 'linuxgtk', 'macos', 'ios', 'android', 'netstandard')]
4646
[string[]]$ExcludeMultiTargets = @(), # default settings
4747

4848
[Alias("c")]
@@ -59,23 +59,26 @@ Param (
5959
)
6060

6161
if ($MultiTargets.Contains('all')) {
62-
$MultiTargets = @('wasm', 'uwp', 'wasdk', 'macos', 'ios', 'android', 'netstandard')
62+
$MultiTargets = @('wasm', 'uwp', 'wasdk', 'wpf', 'linuxgtk', 'macos', 'ios', 'android', 'netstandard')
6363
}
6464

6565
if ($null -eq $ExcludeMultiTargets)
6666
{
6767
$ExcludeMultiTargets = @()
6868
}
6969

70-
# WinUI 2 only builds native UWP (Uno.UI dropped in Uno 6).
71-
# WinUI 3 excludes UWP. Both uwp and wasdk share a targetframework and cannot be enabled at once.
72-
if ($WinUIMajorVersion -eq 2)
70+
# Both uwp and wasdk share a targetframework. Both cannot be enabled at once.
71+
# If both are supplied, remove one based on WinUIMajorVersion.
72+
if ($MultiTargets.Contains('uwp') -and $MultiTargets.Contains('wasdk'))
7373
{
74-
$ExcludeMultiTargets = $ExcludeMultiTargets + 'wasdk' + 'wasm' + 'macos' + 'ios' + 'android'
75-
}
76-
else
77-
{
78-
$ExcludeMultiTargets = $ExcludeMultiTargets + 'uwp'
74+
if ($WinUIMajorVersion -eq 2)
75+
{
76+
$ExcludeMultiTargets = $ExcludeMultiTargets + 'wasdk'
77+
}
78+
else
79+
{
80+
$ExcludeMultiTargets = $ExcludeMultiTargets + 'uwp'
81+
}
7982
}
8083

8184
$MultiTargets = $MultiTargets | Where-Object { $_ -notin $ExcludeMultiTargets }

GenerateSingleSolution.ps1

Lines changed: 13 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@
3333
Date: Feb 9, 2023
3434
#>
3535
Param (
36-
[ValidateSet('all', 'wasm', 'uwp', 'wasdk', 'macos', 'ios', 'android')]
36+
[ValidateSet('all', 'wasm', 'uwp', 'wasdk', 'wpf', 'linuxgtk', 'macos', 'ios', 'android')]
3737
[Alias("mt")]
3838
[string[]]$MultiTargets = @('uwp', 'wasm', 'wasdk'),
3939

@@ -98,23 +98,26 @@ if (-not (Test-Path "$componentPath/src" -PathType Container))
9898
# -----------------
9999

100100
if ($MultiTargets.Contains('all')) {
101-
$MultiTargets = @('wasm', 'uwp', 'wasdk', 'macos', 'ios', 'android')
101+
$MultiTargets = @('wasm', 'uwp', 'wasdk', 'wpf', 'linuxgtk', 'macos', 'ios', 'android')
102102
}
103103

104104
if ($null -eq $ExcludeMultiTargets)
105105
{
106106
$ExcludeMultiTargets = @()
107107
}
108108

109-
# WinUI 2 only builds native UWP (Uno.UI dropped in Uno 6).
110-
# WinUI 3 excludes UWP. Both uwp and wasdk share a targetframework and cannot be enabled at once.
111-
if ($WinUIMajorVersion -eq 2)
109+
# Both uwp and wasdk share a targetframework. Both cannot be enabled at once.
110+
# If both are supplied, remove one based on WinUIMajorVersion.
111+
if ($MultiTargets.Contains('uwp') -and $MultiTargets.Contains('wasdk'))
112112
{
113-
$ExcludeMultiTargets = $ExcludeMultiTargets + 'wasdk' + 'wasm' + 'macos' + 'ios' + 'android'
114-
}
115-
else
116-
{
117-
$ExcludeMultiTargets = $ExcludeMultiTargets + 'uwp'
113+
if ($WinUIMajorVersion -eq 2)
114+
{
115+
$ExcludeMultiTargets = $ExcludeMultiTargets + 'wasdk'
116+
}
117+
else
118+
{
119+
$ExcludeMultiTargets = $ExcludeMultiTargets + 'uwp'
120+
}
118121
}
119122

120123
$MultiTargets = $MultiTargets | Where-Object { $_ -notin $ExcludeMultiTargets }

MultiTarget/AvailableTargetFrameworks.props

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,13 +13,17 @@
1313
<WinAppSdkTargetFrameworks Condition="'$(WinAppSdkTargetFrameworks)' == ''">net9.0-windows10.0.19041.0;net8.0-windows10.0.19041.0;</WinAppSdkTargetFrameworks>
1414

1515
<WasmHeadTargetFramework Condition="'$(WasmHeadTargetFramework)' == ''">net9.0;</WasmHeadTargetFramework>
16-
16+
<LinuxHeadTargetFramework Condition="'$(LinuxHeadTargetFramework)' == ''">net9.0;</LinuxHeadTargetFramework>
17+
<WpfHeadTargetFramework Condition="'$(WpfHeadTargetFramework)' == ''">net9.0;</WpfHeadTargetFramework>
18+
1719
<AndroidLibTargetFrameworks Condition="'$(AndroidLibTargetFrameworks)' == ''">net9.0-android;</AndroidLibTargetFrameworks>
1820
<MacOSLibTargetFrameworks Condition="'$(MacOSLibTargetFrameworks)' == ''">net9.0-maccatalyst;</MacOSLibTargetFrameworks>
1921
<iOSLibTargetFrameworks Condition="'$(iOSLibTargetFrameworks)' == ''">net9.0-ios;</iOSLibTargetFrameworks>
2022

2123
<!-- Used for comparison to current TargetFramework -->
24+
<LinuxLibTargetFrameworks Condition="'$(LinuxLibTargetFrameworks)' == ''">net9.0;</LinuxLibTargetFrameworks>
2225
<WasmLibTargetFrameworks Condition="'$(WasmLibTargetFrameworks)' == ''">net9.0;</WasmLibTargetFrameworks>
26+
<WpfLibTargetFrameworks Condition="'$(WpfLibTargetFrameworks)' == ''">net9.0;</WpfLibTargetFrameworks>
2327

2428
<!-- Used for defining TargetFramework under platforms that need it -->
2529
<DotnetStandardCommonTargetFramework Condition="'$(DotnetStandardCommonTargetFramework)' == ''">netstandard2.0;</DotnetStandardCommonTargetFramework>

MultiTarget/Defaults.props

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
<Project>
22
<PropertyGroup>
3-
<MultiTarget>uwp;wasdk;wasm;macos;ios;android;</MultiTarget>
3+
<MultiTarget>uwp;wasdk;wpf;wasm;linuxgtk;macos;ios;android;</MultiTarget>
44
</PropertyGroup>
55
</Project>

MultiTarget/DefinedConstants.props

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,9 @@
1212
<DefineConstants Condition="'$(IsDroid)' == 'true'">$(DefineConstants);__ANDROID__;</DefineConstants>
1313
<DefineConstants Condition="'$(IsiOS)' == 'true'">$(DefineConstants);__IOS__;</DefineConstants>
1414
<DefineConstants Condition="'$(IsMacOS)' == 'true'">$(DefineConstants);__MACOS__;</DefineConstants>
15+
<DefineConstants Condition="'$(IsWpf)' == 'true'">$(DefineConstants);HAS_UNO_SKIA;__SKIA__;WINDOWS_WPF;</DefineConstants>
16+
<DefineConstants Condition="'$(IsGtk)' == 'true'">$(DefineConstants);HAS_UNO_SKIA;__SKIA__;__GTK__;</DefineConstants>
17+
1518
<DefineConstants Condition="$([MSBuild]::IsTargetFrameworkCompatible('$(TargetFramework)', 'net9.0'))">$(DefineConstants);NET9_0_OR_GREATER</DefineConstants>
1619
<DefineConstants Condition="$([MSBuild]::IsTargetFrameworkCompatible('$(TargetFramework)', 'net8.0'))">$(DefineConstants);NET8_0_OR_GREATER</DefineConstants>
1720
<DefineConstants Condition="$([MSBuild]::IsTargetFrameworkCompatible('$(TargetFramework)', 'net7.0'))">$(DefineConstants);NET7_0_OR_GREATER</DefineConstants>

MultiTarget/EnabledTargetFrameworks.props

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,11 +10,11 @@
1010
<TargetFrameworks Condition="$(EnabledMultiTargets.Contains('wasdk')) == 'true' AND $(AvailableMultiTargets.Contains('wasdk')) == 'true'">$(TargetFrameworks);$(WinAppSdkTargetFrameworks)</TargetFrameworks>
1111

1212
<!--
13-
TargetFrameworks for WasmLibTargetFrameworks use DotnetCommonTargetFramework.
13+
TargetFrameworks for WasmLibTargetFrameworks, WpfLibTargetFrameworks, and LinuxLibTargetFrameworks all use the same value.
1414
Duplicate values can't be removed during the evaluation phase without breaking things, so we use a single value for all that need it.
1515
-->
16-
<IsNetCommonMultiTargetEnabled Condition="$(EnabledMultiTargets.Contains('wasm')) == 'true'">true</IsNetCommonMultiTargetEnabled>
17-
<IsNetCommonMultiTargetAvailable Condition="$(AvailableMultiTargets.Contains('wasm')) == 'true'">true</IsNetCommonMultiTargetAvailable>
16+
<IsNetCommonMultiTargetEnabled Condition="$(EnabledMultiTargets.Contains('wasm')) == 'true' OR $(EnabledMultiTargets.Contains('wpf')) == 'true' OR $(EnabledMultiTargets.Contains('linuxgtk')) == 'true'">true</IsNetCommonMultiTargetEnabled>
17+
<IsNetCommonMultiTargetAvailable Condition="$(AvailableMultiTargets.Contains('wasm')) == 'true' OR $(AvailableMultiTargets.Contains('wpf')) == 'true' OR $(AvailableMultiTargets.Contains('linuxgtk')) == 'true'">true</IsNetCommonMultiTargetAvailable>
1818
<TargetFrameworks Condition="$(IsNetCommonMultiTargetEnabled) == 'true' AND $(IsNetCommonMultiTargetAvailable) == 'true'">$(TargetFrameworks);$(DotnetCommonTargetFramework)</TargetFrameworks>
1919

2020
<TargetFrameworks Condition="$(EnabledMultiTargets.Contains('macos')) == 'true' AND $(AvailableMultiTargets.Contains('macos')) == 'true'">$(TargetFrameworks);$(MacOSLibTargetFrameworks)</TargetFrameworks>

MultiTarget/Filter-Supported-Components.ps1

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
Date: 6/6/2025
1818
#>
1919
Param (
20-
[ValidateSet('all', 'wasm', 'uwp', 'wasdk', 'macos', 'ios', 'android', 'netstandard')]
20+
[ValidateSet('all', 'wasm', 'uwp', 'wasdk', 'wpf', 'linuxgtk', 'macos', 'ios', 'android', 'netstandard')]
2121
[Alias("mt")]
2222
[Parameter(Mandatory=$true)]
2323
[string[]]$MultiTargets,
@@ -32,7 +32,7 @@ Param (
3232
)
3333

3434
if ($MultiTargets -eq 'all') {
35-
$MultiTargets = @('wasm', 'uwp', 'wasdk', 'macos', 'ios', 'android', 'netstandard')
35+
$MultiTargets = @('wasm', 'uwp', 'wasdk', 'wpf', 'linuxgtk', 'macos', 'ios', 'android', 'netstandard')
3636
}
3737

3838
$supportedComponents = @();

0 commit comments

Comments
 (0)