From 9c0725a894f49efe4bf6a469c4b97f24006ce2ed Mon Sep 17 00:00:00 2001 From: Sergio Pedri Date: Sun, 8 Sep 2024 12:58:24 +0200 Subject: [PATCH 1/2] Add .targets to validate the Windows SDK version --- .../CommunityToolkit.Mvvm.WindowsSdk.targets | 62 +++++++++++++++++++ .../CommunityToolkit.Mvvm.csproj | 2 + .../CommunityToolkit.Mvvm.targets | 2 + 3 files changed, 66 insertions(+) create mode 100644 src/CommunityToolkit.Mvvm/CommunityToolkit.Mvvm.WindowsSdk.targets diff --git a/src/CommunityToolkit.Mvvm/CommunityToolkit.Mvvm.WindowsSdk.targets b/src/CommunityToolkit.Mvvm/CommunityToolkit.Mvvm.WindowsSdk.targets new file mode 100644 index 000000000..5b7389ec7 --- /dev/null +++ b/src/CommunityToolkit.Mvvm/CommunityToolkit.Mvvm.WindowsSdk.targets @@ -0,0 +1,62 @@ + + + + + + true + + + + $(ResolveReferencesDependsOn);MvvmToolkitVerifyWindowsSdkPackageVersion + + + + + + + + + <_MvvmToolkitWindowsSdkPackageMinBuild>41 + + + + + <_MvvmToolkitWindowsSdkPackage Include="$(WindowsSdkPackageVersion)" Condition="'$(WindowsSdkPackageVersion)' != ''"> + $(WindowsSdkPackageVersion) + 10.0.$([System.Version]::Parse("$(WindowsSdkPackageVersion.Split('-')[0])").Build).$(_MvvmToolkitWindowsSdkPackageMinBuild) + + + + <_MvvmToolkitWindowsSdkPackage + Include="@(ResolvedFrameworkReference)" + Condition="'$(WindowsSdkPackageVersion)' == '' AND '@(ResolvedFrameworkReference)' != '' AND '%(Identity)' == 'Microsoft.Windows.SDK.NET.Ref'"> + %(ResolvedFrameworkReference.TargetingPackVersion) + 10.0.$([System.Version]::Parse("%(ResolvedFrameworkReference.TargetingPackVersion)").Build).$(_MvvmToolkitWindowsSdkPackageMinBuild) + + + + <_MvvmToolkitCompatibleWindowsSdkPackages + Include="@(_MvvmToolkitWindowsSdkPackage)" + Condition="'@(_MvvmToolkitWindowsSdkPackage)' != '' AND $([MSBuild]::VersionGreaterThanOrEquals(%(Referenced), %(Required)))" /> + + + + + <_MvvmToolkitWindowsSdkPackageRequired>@(_MvvmToolkitWindowsSdkPackage->'%(Required)') + + + + + + + \ No newline at end of file diff --git a/src/CommunityToolkit.Mvvm/CommunityToolkit.Mvvm.csproj b/src/CommunityToolkit.Mvvm/CommunityToolkit.Mvvm.csproj index ef94a0800..94c2f8bf0 100644 --- a/src/CommunityToolkit.Mvvm/CommunityToolkit.Mvvm.csproj +++ b/src/CommunityToolkit.Mvvm/CommunityToolkit.Mvvm.csproj @@ -99,9 +99,11 @@ + + + \ No newline at end of file From bbb4fb21bee84d30d32779571bf1a95f231bcfc3 Mon Sep 17 00:00:00 2001 From: Sergio Pedri Date: Tue, 10 Sep 2024 17:03:40 +0200 Subject: [PATCH 2/2] Suggest package versions based on configuration --- .../CommunityToolkit.Mvvm.WindowsSdk.targets | 23 +++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) diff --git a/src/CommunityToolkit.Mvvm/CommunityToolkit.Mvvm.WindowsSdk.targets b/src/CommunityToolkit.Mvvm/CommunityToolkit.Mvvm.WindowsSdk.targets index 5b7389ec7..ee9b5c2c8 100644 --- a/src/CommunityToolkit.Mvvm/CommunityToolkit.Mvvm.WindowsSdk.targets +++ b/src/CommunityToolkit.Mvvm/CommunityToolkit.Mvvm.WindowsSdk.targets @@ -21,8 +21,20 @@ - - <_MvvmToolkitWindowsSdkPackageMinBuild>41 + + <_MvvmToolkitWindowsSdkPackageMinBuild>38 + <_MvvmToolkitWindowsSdkPackageRecommendedUwpBuild>39 + <_MvvmToolkitWindowsSdkPackageRecommendedWindowsAppSDKBuild>41 + + + <_MvvmToolkitWindowsSdkPackageRecommendedBuild>$(_MvvmToolkitWindowsSdkPackageMinBuild) + <_MvvmToolkitWindowsSdkPackageRecommendedBuild Condition="'$(UseUwp)' == 'true'">$(_MvvmToolkitWindowsSdkPackageRecommendedUwpBuild) + <_MvvmToolkitWindowsSdkPackageRecommendedBuild Condition="'$(UseUwp)' != 'true'">$(_MvvmToolkitWindowsSdkPackageRecommendedWindowsAppSDKBuild) @@ -30,6 +42,7 @@ <_MvvmToolkitWindowsSdkPackage Include="$(WindowsSdkPackageVersion)" Condition="'$(WindowsSdkPackageVersion)' != ''"> $(WindowsSdkPackageVersion) 10.0.$([System.Version]::Parse("$(WindowsSdkPackageVersion.Split('-')[0])").Build).$(_MvvmToolkitWindowsSdkPackageMinBuild) + 10.0.$([System.Version]::Parse("$(WindowsSdkPackageVersion.Split('-')[0])").Build).$(_MvvmToolkitWindowsSdkPackageRecommendedBuild) @@ -38,6 +51,7 @@ Condition="'$(WindowsSdkPackageVersion)' == '' AND '@(ResolvedFrameworkReference)' != '' AND '%(Identity)' == 'Microsoft.Windows.SDK.NET.Ref'"> %(ResolvedFrameworkReference.TargetingPackVersion) 10.0.$([System.Version]::Parse("%(ResolvedFrameworkReference.TargetingPackVersion)").Build).$(_MvvmToolkitWindowsSdkPackageMinBuild) + 10.0.$([System.Version]::Parse("%(ResolvedFrameworkReference.TargetingPackVersion)").Build).$(_MvvmToolkitWindowsSdkPackageRecommendedBuild) @@ -47,8 +61,9 @@ - + <_MvvmToolkitWindowsSdkPackageRequired>@(_MvvmToolkitWindowsSdkPackage->'%(Required)') + <_MvvmToolkitWindowsSdkPackageRecommended>@(_MvvmToolkitWindowsSdkPackage->'%(Recommended)') @@ -56,7 +71,7 @@ Condition="'@(_MvvmToolkitCompatibleWindowsSdkPackages)' == ''" Code="MVVMTKCFG0003" HelpLink="https://aka.ms/mvvmtoolkit/errors/mvvmtkcfg0003" - 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)'." /> + 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)'." /> \ No newline at end of file