Skip to content

Commit

Permalink
Allow MAUI to be built using .NET 7 (#10047)
Browse files Browse the repository at this point in the history
  • Loading branch information
mattleibow authored Sep 11, 2022
1 parent 1b970b7 commit 9b4992c
Show file tree
Hide file tree
Showing 2 changed files with 49 additions and 16 deletions.
25 changes: 14 additions & 11 deletions Directory.Build.Override.props.in
Original file line number Diff line number Diff line change
@@ -1,22 +1,25 @@
<Project>

<PropertyGroup>
<!-- Setting any of these to true will cause all the other platforms to get excluded.
Cake writes out to these properties when you've used a specific target switch
-->
<_IncludeWindows></_IncludeWindows>
<_IncludeTizen></_IncludeTizen>
<_IncludeAndroid></_IncludeAndroid>
<_IncludeIos></_IncludeIos>
<_IncludeMacCatalyst></_IncludeMacCatalyst>
<_IncludeTizen></_IncludeTizen>
<_IncludeAndroid></_IncludeAndroid>
<_IncludeIos></_IncludeIos>
<_IncludeMacCatalyst></_IncludeMacCatalyst>
<_IncludeMacOS></_IncludeMacOS>
</PropertyGroup>


<PropertyGroup>
<_SpecificPlatformRequested Condition="'$(_IncludeAndroid)' == 'true' OR '$(_IncludeWindows)' == 'true' OR '$(_IncludeTizen)' == 'true' OR '$(_IncludeIos)' == 'true' OR '$(_IncludeMacCatalyst)' == 'true'">true</_SpecificPlatformRequested>
<IncludeAndroidTargetFrameworks Condition="'$(_SpecificPlatformRequested)' == 'true' AND '$(_IncludeAndroid)' != 'true'">false</IncludeAndroidTargetFrameworks>
<IncludeWindowsTargetFrameworks Condition="'$(_SpecificPlatformRequested)' == 'true' AND '$(_IncludeWindows)' != 'true'">false</IncludeWindowsTargetFrameworks>
<IncludeTizenTargetFrameworks Condition="'$(_SpecificPlatformRequested)' == 'true' AND '$(_IncludeTizen)' != 'true'">false</IncludeTizenTargetFrameworks>
<IncludeIosFrameworks Condition="'$(_SpecificPlatformRequested)' == 'true' AND '$(_IncludeIos)' != 'true'">false</IncludeIosFrameworks>
<IncludeMacCatalystTargetFrameworks Condition="'$(_SpecificPlatformRequested)' == 'true' AND '$(_IncludeMacCatalyst)' != 'true'">false</IncludeMacCatalystTargetFrameworks>
<_SpecificPlatformRequested Condition="'$(_IncludeAndroid)' == 'true' OR '$(_IncludeWindows)' == 'true' OR '$(_IncludeTizen)' == 'true' OR '$(_IncludeIos)' == 'true' OR '$(_IncludeMacCatalyst)' == 'true' OR '$(_IncludeMacOS)' == 'true'">true</_SpecificPlatformRequested>
<IncludeAndroidTargetFrameworks Condition="'$(_SpecificPlatformRequested)' == 'true' AND '$(_IncludeAndroid)' != 'true'">false</IncludeAndroidTargetFrameworks>
<IncludeWindowsTargetFrameworks Condition="'$(_SpecificPlatformRequested)' == 'true' AND '$(_IncludeWindows)' != 'true'">false</IncludeWindowsTargetFrameworks>
<IncludeTizenTargetFrameworks Condition="'$(_SpecificPlatformRequested)' == 'true' AND '$(_IncludeTizen)' != 'true'">false</IncludeTizenTargetFrameworks>
<IncludeIosTargetFrameworks Condition="'$(_SpecificPlatformRequested)' == 'true' AND '$(_IncludeIos)' != 'true'">false</IncludeIosTargetFrameworks>
<IncludeMacCatalystTargetFrameworks Condition="'$(_SpecificPlatformRequested)' == 'true' AND '$(_IncludeMacCatalyst)' != 'true'">false</IncludeMacCatalystTargetFrameworks>
<IncludeMacOSTargetFrameworks Condition="'$(_SpecificPlatformRequested)' == 'true' AND '$(_IncludeMacOS)' != 'true'">false</IncludeMacOSTargetFrameworks>
</PropertyGroup>

</Project>
40 changes: 35 additions & 5 deletions Directory.Build.props
Original file line number Diff line number Diff line change
Expand Up @@ -15,11 +15,41 @@
<_MauiTargetPlatformIstvOS Condition="'$(_MauiTargetPlatformIdentifier)' == 'tvos'">True</_MauiTargetPlatformIstvOS>
<_MauiTargetPlatformIsWindows Condition="$(_MauiTargetPlatformIdentifier.Contains('windows')) == 'True'">True</_MauiTargetPlatformIsWindows>
<_MauiTargetPlatformIsTizen Condition="'$(_MauiTargetPlatformIdentifier)' == 'tizen'">True</_MauiTargetPlatformIsTizen>
</PropertyGroup>

<!-- Try determine which .NET workloads are installed -->
<PropertyGroup Condition="'$(CI)' != 'true' and '$(TF_BUILD)' != 'true'">
<DotNetWorkloadVersionRegex>\d+\.\d+\.\d+(-[a-z]+[\.\d+]+)?</DotNetWorkloadVersionRegex>
<DotNetSdkVersionRegex>\d+\.\d+\.\d+(-[a-z]+\.\d+)?</DotNetSdkVersionRegex>

<DotNetSdkManifestVersion>$([System.Text.RegularExpressions.Regex]::Match('$(MSBuildExtensionsPath)', '$(DotNetSdkVersionRegex)'))</DotNetSdkManifestVersion>

<DotNetWorkloadInstallLocation Condition="'$(DotNetWorkloadInstallLocation)' == '' and Exists('$(DOTNET_ROOT)\sdk-manifests\$(DotNetSdkManifestVersion)\microsoft.net.sdk.macos\WorkloadManifest.json')">$(DOTNET_ROOT)\sdk-manifests\$(DotNetSdkManifestVersion)\</DotNetWorkloadInstallLocation>
<DotNetWorkloadInstallLocation Condition="'$(DotNetWorkloadInstallLocation)' == '' and Exists('$(ProgramFiles)\dotnet\sdk-manifests\$(DotNetSdkManifestVersion)\microsoft.net.sdk.macos\WorkloadManifest.json')">$(ProgramFiles)\dotnet\sdk-manifests\$(DotNetSdkManifestVersion)\</DotNetWorkloadInstallLocation>
<DotNetWorkloadPacksInstallLocation Condition="'$(DotNetWorkloadInstallLocation)' != ''">$(DotNetWorkloadInstallLocation)..\..\packs\</DotNetWorkloadPacksInstallLocation>

<DotNetMacOSWorkloadInstalledVersion Condition="Exists('$(DotNetWorkloadInstallLocation)microsoft.net.sdk.macos\WorkloadManifest.json')">$([System.Text.RegularExpressions.Regex]::Match($([System.IO.File]::ReadAllText('$(DotNetWorkloadInstallLocation)\microsoft.net.sdk.macos\WorkloadManifest.json')), '$(DotNetWorkloadVersionRegex)'))</DotNetMacOSWorkloadInstalledVersion>
<DotNetTizenWorkloadInstalledVersion Condition="Exists('$(DotNetWorkloadInstallLocation)samsung.net.sdk.tizen\WorkloadManifest.json')">$([System.Text.RegularExpressions.Regex]::Match($([System.IO.File]::ReadAllText('$(DotNetWorkloadInstallLocation)\samsung.net.sdk.tizen\WorkloadManifest.json')), $(DotNetWorkloadVersionRegex)))</DotNetTizenWorkloadInstalledVersion>

<DotNetMacOSWorkloadIsInstalled Condition="Exists('$(DotNetWorkloadPacksInstallLocation)Microsoft.macOS.Sdk\$(DotNetMacOSWorkloadInstalledVersion)\Sdk\AutoImport.props')">true</DotNetMacOSWorkloadIsInstalled>
<DotNetTizenWorkloadIsInstalled Condition="Exists('$(DotNetWorkloadPacksInstallLocation)Samsung.Tizen.Sdk\$(DotNetTizenWorkloadInstalledVersion)\Sdk\AutoImport.props')">true</DotNetTizenWorkloadIsInstalled>

<IncludeWindowsTargetFrameworks Condition="$([MSBuild]::IsOSPlatform('windows')) or '$(Packing)' == 'true'">true</IncludeWindowsTargetFrameworks>
<IncludeTizenTargetFrameworks Condition="'$(CI)' == 'true' or '$(TF_BUILD)' == 'true' or
Exists('$(DOTNET_ROOT)\sdk-manifests\$(DotNetVersionBand)\samsung.net.sdk.tizen\WorkloadManifest.json') or
Exists('$(ProgramFiles)\dotnet\sdk-manifests\$(DotNetVersionBand)\samsung.net.sdk.tizen\WorkloadManifest.json')">true</IncludeTizenTargetFrameworks>
<IncludeMacOSTargetFrameworks Condition="'$(DotNetMacOSWorkloadIsInstalled)' == 'true'">true</IncludeMacOSTargetFrameworks>
<IncludeTizenTargetFrameworks Condition="'$(DotNetTizenWorkloadIsInstalled)' == 'true'">true</IncludeTizenTargetFrameworks>
<IncludeAndroidTargetFrameworks>true</IncludeAndroidTargetFrameworks>
<IncludeMacCatalystTargetFrameworks>true</IncludeMacCatalystTargetFrameworks>
<IncludeIosTargetFrameworks>true</IncludeIosTargetFrameworks>
</PropertyGroup>

<!-- this is CI, so everything should be there -->
<PropertyGroup Condition="'$(CI)' == 'true' or '$(TF_BUILD)' == 'true'">
<IncludeWindowsTargetFrameworks Condition="$([MSBuild]::IsOSPlatform('windows'))">true</IncludeWindowsTargetFrameworks>
<IncludeTizenTargetFrameworks>true</IncludeTizenTargetFrameworks>
<IncludeMacOSTargetFrameworks>true</IncludeMacOSTargetFrameworks>
<IncludeAndroidTargetFrameworks>true</IncludeAndroidTargetFrameworks>
<IncludeMacCatalystTargetFrameworks>true</IncludeMacCatalystTargetFrameworks>
<IncludeIosTargetFrameworks>true</IncludeIosTargetFrameworks>
</PropertyGroup>

<PropertyGroup>
Expand Down Expand Up @@ -54,11 +84,11 @@
<MauiPlatforms Condition="'$(IncludeWindowsTargetFrameworks)' == 'true'">$(WindowsMauiPlatforms);$(MauiPlatforms)</MauiPlatforms>
<MauiPlatforms Condition="'$(IncludeAndroidTargetFrameworks)' != 'false'">net$(_MauiDotNetVersion)-android;$(MauiPlatforms)</MauiPlatforms>
<MauiPlatforms Condition="'$(IncludeMacCatalystTargetFrameworks)' != 'false'">net$(_MauiDotNetVersion)-maccatalyst;$(MauiPlatforms)</MauiPlatforms>
<MauiPlatforms Condition="'$(IncludeIosFrameworks)' != 'false'">net$(_MauiDotNetVersion)-ios;$(MauiPlatforms)</MauiPlatforms>
<MauiPlatforms Condition="'$(IncludeIosTargetFrameworks)' != 'false'">net$(_MauiDotNetVersion)-ios;$(MauiPlatforms)</MauiPlatforms>

<!-- Work around the IDE not properly handling the NU1703 warning -->
<MauiPlatformsNoMacCat Condition="'$(IncludeWindowsTargetFrameworks)' == 'true'">$(MauiPlatformsNoMacCat);$(WindowsMauiPlatforms)</MauiPlatformsNoMacCat>
<MauiPlatformsNoMacCat Condition="'$(IncludeIosFrameworks)' != 'false'">net$(_MauiDotNetVersion)-ios;$(MauiPlatformsNoMacCat)</MauiPlatformsNoMacCat>
<MauiPlatformsNoMacCat Condition="'$(IncludeIosTargetFrameworks)' != 'false'">net$(_MauiDotNetVersion)-ios;$(MauiPlatformsNoMacCat)</MauiPlatformsNoMacCat>
<MauiPlatformsNoMacCat Condition="'$(IncludeAndroidTargetFrameworks)' != 'false'">net$(_MauiDotNetVersion)-android;$(MauiPlatformsNoMacCat)</MauiPlatformsNoMacCat>
</PropertyGroup>

Expand Down

0 comments on commit 9b4992c

Please sign in to comment.