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

.NET可移植类库中使用async/await遇CS0012错误如何解决?

解决.NET可移植类库中async/await调用CameraCaptureUI时的CS0012错误

这个错误本质是你的项目缺少了Windows.Foundation.FoundationContract程序集的引用,而IAsyncOperation<>类型正是定义在这个程序集里的。下面是几个可行的解决步骤:

  • 检查并调整项目目标框架
    可移植类库(PCL)的目标平台需要包含支持Windows.Foundation.FoundationContract v3.0.0.0的Windows版本,也就是Windows 10 Anniversary Update(版本1607,内部版本14393)及以上。你可以右键项目→属性→“库”选项卡,在“目标可移植性”里确认目标平台是否包含这个版本的Windows,如果没有,添加对应的平台版本。

  • 直接添加缺失的程序集引用
    右键你的PCL项目→添加→引用,在弹出的引用管理器中切换到“Windows”→“通用Windows”→“扩展”选项,找到Windows.Foundation.FoundationContract,选择版本3.0.0.0(或兼容的更高版本),勾选后点击确定。这样就能把缺失的程序集引入项目。

  • 使用扩展方法转换异步操作(替代方案)
    如果暂时无法添加上述引用,或者项目目标平台受限,可以把IAsyncOperation<T>转换为Task<T>来适配async/await语法。只需要调用AsTask()扩展方法,同时确保你的代码顶部引用了System.Threading.Tasks.WindowsRuntime命名空间:

    using System.Threading.Tasks.WindowsRuntime;
    
    // ...
    
    StorageFile photo = await cameraUI.CaptureFileAsync(CameraCaptureUIMode.Photo).AsTask();
    
  • 考虑迁移到.NET Standard类库(长期方案)
    可移植类库(PCL)已经被.NET Standard类库取代,后者的兼容性和引用管理更简单。如果你的项目允许,建议迁移到.NET Standard 2.0或更高版本,这样能避免很多PCL特有的引用问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.12 04:40:28