Skip to content

Commit bbb4fb2

Browse files
committed
Suggest package versions based on configuration
1 parent 9c0725a commit bbb4fb2

File tree

1 file changed

+19
-4
lines changed

1 file changed

+19
-4
lines changed

src/CommunityToolkit.Mvvm/CommunityToolkit.Mvvm.WindowsSdk.targets

Lines changed: 19 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,15 +21,28 @@
2121
<Target Name="MvvmToolkitVerifyWindowsSdkPackageVersion" DependsOnTargets="ResolveAssemblyReferences">
2222
<PropertyGroup>
2323

24-
<!-- The minimum build version for the Windows SDK package -->
25-
<_MvvmToolkitWindowsSdkPackageMinBuild>41</_MvvmToolkitWindowsSdkPackageMinBuild>
24+
<!--
25+
The minimum build versions for the Windows SDK package. We keep track of up to 3 different versions:
26+
- The minimum Windows SDK package for which we don't want to emit a build error.
27+
- The recommended Windows SDK package for UWP projects using the .NET 9 SDK (with UWP XAML projections).
28+
- The recommended Windows SDK package for WindowsAppSDK projects (ie. without UWP XAML projections).
29+
-->
30+
<_MvvmToolkitWindowsSdkPackageMinBuild>38</_MvvmToolkitWindowsSdkPackageMinBuild>
31+
<_MvvmToolkitWindowsSdkPackageRecommendedUwpBuild>39</_MvvmToolkitWindowsSdkPackageRecommendedUwpBuild>
32+
<_MvvmToolkitWindowsSdkPackageRecommendedWindowsAppSDKBuild>41</_MvvmToolkitWindowsSdkPackageRecommendedWindowsAppSDKBuild>
33+
34+
<!-- Switch on the recommended one based on configuration -->
35+
<_MvvmToolkitWindowsSdkPackageRecommendedBuild>$(_MvvmToolkitWindowsSdkPackageMinBuild)</_MvvmToolkitWindowsSdkPackageRecommendedBuild>
36+
<_MvvmToolkitWindowsSdkPackageRecommendedBuild Condition="'$(UseUwp)' == 'true'">$(_MvvmToolkitWindowsSdkPackageRecommendedUwpBuild)</_MvvmToolkitWindowsSdkPackageRecommendedBuild>
37+
<_MvvmToolkitWindowsSdkPackageRecommendedBuild Condition="'$(UseUwp)' != 'true'">$(_MvvmToolkitWindowsSdkPackageRecommendedWindowsAppSDKBuild)</_MvvmToolkitWindowsSdkPackageRecommendedBuild>
2638
</PropertyGroup>
2739
<ItemGroup>
2840

2941
<!-- If 'WindowsSdkPackageVersion' is explicitly set, validate against that -->
3042
<_MvvmToolkitWindowsSdkPackage Include="$(WindowsSdkPackageVersion)" Condition="'$(WindowsSdkPackageVersion)' != ''">
3143
<Referenced>$(WindowsSdkPackageVersion)</Referenced>
3244
<Required>10.0.$([System.Version]::Parse("$(WindowsSdkPackageVersion.Split('-')[0])").Build).$(_MvvmToolkitWindowsSdkPackageMinBuild)</Required>
45+
<Recommended>10.0.$([System.Version]::Parse("$(WindowsSdkPackageVersion.Split('-')[0])").Build).$(_MvvmToolkitWindowsSdkPackageRecommendedBuild)</Recommended>
3346
</_MvvmToolkitWindowsSdkPackage>
3447

3548
<!-- Otherwise, validate against the framework reference package -->
@@ -38,6 +51,7 @@
3851
Condition="'$(WindowsSdkPackageVersion)' == '' AND '@(ResolvedFrameworkReference)' != '' AND '%(Identity)' == 'Microsoft.Windows.SDK.NET.Ref'">
3952
<Referenced>%(ResolvedFrameworkReference.TargetingPackVersion)</Referenced>
4053
<Required>10.0.$([System.Version]::Parse("%(ResolvedFrameworkReference.TargetingPackVersion)").Build).$(_MvvmToolkitWindowsSdkPackageMinBuild)</Required>
54+
<Recommended>10.0.$([System.Version]::Parse("%(ResolvedFrameworkReference.TargetingPackVersion)").Build).$(_MvvmToolkitWindowsSdkPackageRecommendedBuild)</Recommended>
4155
</_MvvmToolkitWindowsSdkPackage>
4256

4357
<!-- Check whether the referenced Windows SDK package is compatible -->
@@ -47,16 +61,17 @@
4761
</ItemGroup>
4862
<PropertyGroup>
4963

50-
<!-- Extract the required Windows SDK package version (to show if the one in use is not compatible) -->
64+
<!-- Extract the required and recommended Windows SDK package version (to show if the one in use is not compatible) -->
5165
<_MvvmToolkitWindowsSdkPackageRequired>@(_MvvmToolkitWindowsSdkPackage->'%(Required)')</_MvvmToolkitWindowsSdkPackageRequired>
66+
<_MvvmToolkitWindowsSdkPackageRecommended>@(_MvvmToolkitWindowsSdkPackage->'%(Recommended)')</_MvvmToolkitWindowsSdkPackageRecommended>
5267
</PropertyGroup>
5368

5469
<!-- Emit an error if the Windows SDK package version isn't valid -->
5570
<Error
5671
Condition="'@(_MvvmToolkitCompatibleWindowsSdkPackages)' == ''"
5772
Code="MVVMTKCFG0003"
5873
HelpLink="https://aka.ms/mvvmtoolkit/errors/mvvmtkcfg0003"
59-
Text="This version of the MVVM Toolkit requires 'Microsoft.Windows.SDK.NET.Ref' version '$(_MvvmToolkitWindowsSdkPackageRequired)' or later. Please update to .NET SDK 8.0.109, 8.0.305 or 8.0.402 (or later). Alternatively, use a temporary 'Microsoft.Windows.SDK.NET.Ref' reference, which can be done by setting the 'WindowsSdkPackageVersion' property in your .csproj file to '$(_MvvmToolkitWindowsSdkPackageRequired)'." />
74+
Text="This version of the MVVM Toolkit requires 'Microsoft.Windows.SDK.NET.Ref' version '$(_MvvmToolkitWindowsSdkPackageRequired)' or later. Please update to .NET SDK 8.0.109, 8.0.305 or 8.0.402 (or later). Alternatively, use a temporary 'Microsoft.Windows.SDK.NET.Ref' reference, which can be done by setting the 'WindowsSdkPackageVersion' property in your .csproj file. For your project configuration, it is recommended to set the package version to '$(_MvvmToolkitWindowsSdkPackageRecommended)'." />
6075
</Target>
6176

6277
</Project>

0 commit comments

Comments
 (0)