如何删除 .net MAUI 中不需要编译的平台?

DaW*_*guy 39 .net visual-studio maui visual-studio-2022

我只想为 MacOS 和 Windows 制作一个项目,不需要 Android 或 iOS。我尝试从名为“Platforms”的文件夹中删除平台,但它们似乎会重新生成每个编译。是否有官方方法仅针对必要的平台?我查看了多个项目文件,但 Android 和 iOS 标签分散在各处。

有人可以帮我解决这个问题吗?

Mat*_*int 49

所需变更
  • 在您的.csproj文件中,删除您不构建的平台的目标,将其减少为以下内容:

    <TargetFrameworks>net6.0-maccatalyst</TargetFrameworks>
    <TargetFrameworks Condition="$([MSBuild]::IsOSPlatform('windows'))">$(TargetFrameworks);net6.0-windows10.0.19041.0</TargetFrameworks>
    
    Run Code Online (Sandbox Code Playgroud)
可选更改
  • 在您的.csproj文件中,删除您不构建的平台的受支持版本信息,将其减少为以下内容:

    <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>
    
    Run Code Online (Sandbox Code Playgroud)
  • Platforms删除您不为其构建的平台的文件夹下的所有子目录。

注意事项
  • 您只能在 Windows 计算机上针对 Windows 平台进行构建。
  • 您只能从 Mac 或已设置“与Mac 配对”的 Windows 计算机为 MacCatalyst 进行构建。

  • 另请记住,对于 C# 文件,“#if IOS”和“#if MACCATALYST”适用于各自的平台,而“#if __IOS__”涵盖*两者*。 (4认同)

Arv*_*iya 6

从中删除平台Debug Target

右键单击“项目”并继续“编辑项目文件”,在里面PropertyGroup,会有以下几行

<TargetFrameworks>net7.0-android;net7.0-ios;net7.0-maccatalyst</TargetFrameworks>
<TargetFrameworks Condition="$([MSBuild]::IsOSPlatform('windows'))">$(TargetFrameworks);net7.0-windows10.0.19041.0</TargetFrameworks>
Run Code Online (Sandbox Code Playgroud)

删除 Windows 项目

删除第二行。你的代码看起来像这样

<TargetFrameworks>net7.0-android;net7.0-ios;net7.0-maccatalyst</TargetFrameworks>
<!--<TargetFrameworks Condition="$([MSBuild]::IsOSPlatform('windows'))">$(TargetFrameworks);net7.0-windows10.0.19041.0</TargetFrameworks>-->
Run Code Online (Sandbox Code Playgroud)

删除 iOS 和 Mac Catalyst

将第一行更改为

<TargetFrameworks>net7.0-android</TargetFrameworks>
<TargetFrameworks Condition="$([MSBuild]::IsOSPlatform('windows'))">$(TargetFrameworks);net7.0-windows10.0.19041.0</TargetFrameworks>
Run Code Online (Sandbox Code Playgroud)

删除 Windows、iOS 和 Mac Catalyst

删除第二行,并更改第一行。你的代码看起来像这样

<TargetFrameworks>net7.0-android</TargetFrameworks>
<!--<TargetFrameworks Condition="$([MSBuild]::IsOSPlatform('windows'))">$(TargetFrameworks);net7.0-windows10.0.19041.0</TargetFrameworks>-->
Run Code Online (Sandbox Code Playgroud)

一旦您从 中删除项目引用.csproj,您甚至可以从解决方案中删除项目(非必需项目)。在项目中,转到平台文件夹并删除项目。