30

I only want to make a project for MacOS and Windows, no need for Android or iOS. I tried deleting the platforms from the folder called "Platforms" but they seem to regenerate each compile. Is there an official method for only targeting the platforms that are necessary? I looked at multiple project files, but there are Android and iOS tags scattered throughout.

Can someone please help me with this?

DaWiseguy
  • 786
  • 7
  • 16

1 Answers1

40
Required Change
  • In your .csproj file, remove the targets for the platforms you aren't building for, reducing it to the following:

    <TargetFrameworks>net6.0-maccatalyst</TargetFrameworks>
    <TargetFrameworks Condition="$([MSBuild]::IsOSPlatform('windows'))">$(TargetFrameworks);net6.0-windows10.0.19041.0</TargetFrameworks>
    
Optional Changes
  • In your .csproj file, remove the supported version information for the platforms you aren't building for, reducing it to the following:

    <SupportedOSPlatformVersion Condition="$([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) == 'maccatalyst'">14.0</SupportedOSPlatformVersion>
    <SupportedOSPlatformVersion Condition="$([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) == 'windows'">10.0.17763.0</SupportedOSPlatformVersion>
    <TargetPlatformMinVersion Condition="$([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) == 'windows'">10.0.17763.0</TargetPlatformMinVersion>
    
  • Delete any subdirectories under the Platforms folder for the platforms you aren't building for.

Caveats
  • You can only build for the Windows platform on a Windows machine.
  • You can only build for MacCatalyst from a Mac, or from a Windows machine that has been set up with Pair to Mac.
Matt Johnson-Pint
  • 230,703
  • 74
  • 448
  • 575