.NET MAUI项目CA1416警告与NETSDK1135错误解决咨询
.NET MAUI项目CA1416警告与TargetPlatformVersion异常问题
项目背景
我有一个规模较大的.NET MAUI项目,其中包含多个基于.NET 6的私有包,这些包的框架定义直接使用模板生成:
<TargetFramework>net6.0</TargetFramework> <TargetFrameworks>net6.0;net6.0-android;net6.0-ios;net6.0-maccatalyst</TargetFrameworks>
构建警告问题
构建该MAUI应用时,收到大量CA1416警告示例如下:
3>C:\Maui\MauiProgram.cs(94,13,97,78): warning CA1416: This call site is reachable on: 'iOS' 15.4 and later, 'maccatalyst' 15.4 and later. 'TokenRetrievalHandler<SignInPolicy>' is only supported on: 'iOS' 16.0 and later, 'maccatalyst' 16.0 and later. 3>C:\Maui\MauiProgram.cs(89,13,91,93): warning CA1416: This call site is reachable on: 'iOS' 15.4 and later, 'maccatalyst' 15.4 and later. 'MsalTokenService<SignInPolicy>' is only supported on: 'iOS' 16.0 and later, 'maccatalyst' 16.0 and later. 3>C:\Maui\MauiProgram.cs(89,13,91,93): warning CA1416: This call site is reachable on: 'iOS' 15.4 and later, 'maccatalyst' 15.4 and later. 'ITokenService<SignInPolicy>' is only supported on: 'iOS' 16.0 and later, 'maccatalyst' 16.0 and later. 3>C:\Maui\MauiProgram.cs(96,52,96,100): warning CA1416: This call site is reachable on: 'iOS' 15.4 and later, 'maccatalyst' 15.4 and later. 'Policy.TokenRefresher<SignInPolicy>(IServiceProvider, HttpRequestMessage)' is only supported on: 'iOS' 16.0 and later, 'maccatalyst' 16.0 and later. 3>C:\Maui\MauiProgram.cs(101,13,104,37): warning CA1416: This call site is reachable on: 'iOS' 15.4 and later, 'maccatalyst' 15.4 and later. 'ServiceCollectionExtensions.UseThetaRexCommon(IServiceCollection)' is only supported on: 'iOS' 16.0 and later, 'maccatalyst' 16.0 and later. 3>C:\Maui\MauiProgram.cs(89,13,90,69): warning CA1416: This call site is reachable on: 'iOS' 15.4 and later, 'maccatalyst' 15.4 and later. 'TokenRetrievalHandler<SignInPolicy>' is only supported on: 'iOS' 16.0 and later, 'maccatalyst' 16.0 and later. 3>C:\Maui\MauiProgram.cs(95,35,95,49): warning CA1416: This call site is reachable on: 'iOS' 15.4 and later, 'maccatalyst' 15.4 and later. 'Policy.Retry()' is only supported on: 'iOS' 16.0 and later, 'maccatalyst' 16.0 and later.
所有包和MAUI项目代码中都未指定要求macCatalyst 16.0,且无法降低框架支持版本,因此尝试提高项目支持的OS版本。
修改版本后的错误
查看MAUI项目文件,发现默认配置如下:
<SupportedOSPlatformVersion Condition="$([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) == 'ios'">15.4</SupportedOSPlatformVersion> <SupportedOSPlatformVersion Condition="$([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) == 'maccatalyst'">15.4</SupportedOSPlatformVersion> <SupportedOSPlatformVersion Condition="$([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) == 'android'">31.0</SupportedOSPlatformVersion> <SupportedOSPlatformVersion Condition="$([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) == 'windows'">10.0.17763.0</SupportedOSPlatformVersion>
将iOS的支持版本修改为16.0:
<SupportedOSPlatformVersion Condition="$([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) == 'ios'">16.0</SupportedOSPlatformVersion>
此时出现构建错误:
error NETSDK1135: SupportedOSPlatformVersion 16.0 cannot be higher than TargetPlatformVersion 15.4.
但我从未手动指定过TargetPlatformVersion为15.4。
补充说明
奇怪的是,若将包直接作为.NET Core 6库添加到项目中,不会出现这些错误,仅当打包后才会触发问题。
内容的提问来源于stack exchange,提问作者user365462
相关产品推荐
相关产品推荐

