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

Xamarin Forms项目okio.AsyncTimeout$1重复定义编译错误解决

排查与解决Xamarin.Forms中okio类重复定义问题

一、定位间接引入冲突包的源头

你没直接安装okio或okhttp,冲突肯定来自某个已装NuGet包的间接依赖,按以下方法找:

  • 打开Visual Studio,右键项目 → 管理NuGet程序包 → 切到已安装标签,逐个查看带网络请求功能的包(比如Xamarin.Auth、RestSharp、第三方SDK等)的依赖项,看是否包含okio/okhttp。
  • 更高效的方式:在项目根目录开终端,执行dotnet list package --include-transitive,输出里搜okio、okhttp关键词,直接找到是哪个包引入的冲突依赖。

二、具体解决办法

  • 排除重复的依赖文件
    找到引发冲突的NuGet包后,修改项目的.csproj文件,给对应的PackageReference加排除规则。比如如果是SomeProblemPackage引入了okhttp-2.3.0-jar-with-dependencies.jar,就这么写:

    <PackageReference Include="SomeProblemPackage" Version="x.x.x">
      <ExcludeAssets>okhttp-2.3.0-jar-with-dependencies.jar</ExcludeAssets>
    </PackageReference>
    

    要是排除后出现缺失类的错误,说明这个jar里还有必要的内容,得换其他方案。

  • 强制统一依赖版本
    如果是不同包引入了不同版本的okio/okhttp,手动指定统一版本来覆盖:
    在.csproj里加这段,把版本号改成和冲突中okhttp兼容的okio版本:

    <ItemGroup>
      <PackageReference Include="okio" Version="x.x.x" PrivateAssets="all" />
    </ItemGroup>
    
  • 清理重建依赖

    • 右键项目 → 清理,删掉项目下的bin和obj文件夹。
    • 终端执行dotnet restore重新拉取依赖。
    • 重启VS后再编译试试。
  • 替换有问题的NuGet包
    如果某个包本身打包了带所有依赖的jar(比如okhttp-2.3.0-jar-with-dependencies.jar这种),试试找这个包的更新版本,或者换个功能类似但依赖管理更规范的包——很多旧版SDK会直接打包依赖,新版一般会改成依赖独立的NuGet包,避免重复。

三、验证效果

改完后重新编译,错误消失就说明解决了。要是还有问题,再回头检查有没有漏查的间接依赖包。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 00:21:13