You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Xamarin.Forms集成AWS Identity Pool登录遇构造方法缺失异常求助

解决Xamarin.Forms集成AWS Identity Pool时的System.MissingMethodException问题

我之前在Xamarin项目里集成AWS服务时也碰到过一模一样的问题,这种编译通过但运行时抛出找不到构造函数的异常,90%是NuGet包版本不兼容或者引用出了问题,结合你的场景,给你几个实用的排查和解决步骤:

1. 统一AWS相关NuGet包的版本

Xamarin对依赖包的版本一致性要求特别高,哪怕是同一系列的AWS SDK包小版本不一样,都可能引发这种方法找不到的问题:

  • 右键你的解决方案,选择「管理NuGet程序包」
  • 切换到「已安装」标签,筛选所有以AWSSDK.开头的包,比如AWSSDK.CognitoIdentityProvider、AWSSDK.CognitoIdentity、AWSSDK.Core这些
  • 将所有这些包升级到完全相同的版本,注意因为你用的是VS2017,别选太新的AWS SDK版本(比如2024年之后的版本可能不兼容旧版Xamarin),选2020-2022年的稳定版本会更稳妥

2. 彻底清理项目缓存再重新生成

有时候编译缓存会残留旧的引用文件,导致运行时加载错误:

  • 先点击菜单栏的「生成」→「清理解决方案」
  • 手动删除每个项目下的bin和obj文件夹(可以直接在文件资源管理器里找到项目目录删除,或者用VS的「在文件资源管理器中打开文件夹」功能)
  • 最后重新生成整个解决方案

3. 检查构造函数的调用是否符合当前SDK版本

你参照的示例可能是基于旧版AWS SDK写的,新版SDK已经修改了AmazonCognitoIdentityProviderClient的构造函数签名,旧的无参构造可能被移除了:

  • 右键点击代码里的AmazonCognitoIdentityProviderClient,选择「转到定义」,查看当前SDK支持的构造函数
  • 正确的调用方式应该是传入区域端点或者配置,比如:
    // 直接传入区域
    var client = new AmazonCognitoIdentityProviderClient(RegionEndpoint.USEast1); // 替换成你的Identity Pool所在区域
    
    // 或者通过配置类传入
    var config = new AmazonCognitoIdentityProviderConfig
    {
        RegionEndpoint = RegionEndpoint.USEast1
    };
    var client = new AmazonCognitoIdentityProviderClient(config);
    

4. 确认项目的目标框架版本

VS2017自带的Xamarin版本可能比较旧,如果你项目的目标Android/iOS框架版本太低,会导致AWS SDK的部分功能无法兼容:

  • 对于Android项目:右键项目→「属性」→「应用程序」,确保目标框架至少是Android 8.0(API 26)及以上
  • 对于iOS项目:右键项目→「属性」→「iOS应用」,检查目标iOS版本是否符合AWS SDK的要求(一般至少iOS 12.0)

5. 深挖编译警告里的线索

你说编译只有警告没有错误,这些警告很可能就是问题的根源,比如版本冲突、依赖缺失等:

  • 右键项目→「属性」→「生成」→「高级」,把「警告级别」设置为4(详细)
  • 重新编译项目,查看输出窗口的详细警告信息,重点关注和AWS包引用相关的警告,比如“检测到版本冲突”或者“无法解析依赖项”这类提示,根据提示调整包版本

内容的提问来源于stack exchange,提问作者Mihai Catan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 07:41:48