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

如何阻止已删除的Xamarin Forms iOS资源文件部署到App Store Connect?

问题描述

我的Xamarin Forms iOS项目原本有5个文本文件,路径为项目名称 -> Resources -> TextFiles -> File1.txt、File2.txt、File3.txt、File4.txt、File5.txt。应用启动时,我通过NSBundle.GetPathsForResources()将这些文件复制到工作文件夹,工作文件夹的获取代码如下:

public string GetWorkingFolder()
{
    string docs = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);

    return Path.Combine(docs, "..", "Library");
} 

发布版本中我不再需要后3个文件,于是将它们从项目的Resources/TextFiles文件夹中删除。在iPhone上以调试模式运行应用时一切正常,仅保留File1.txt和File2.txt。但将应用上传到App Connect并通过TestFlight部署到设备后,5个文件依然存在。我尝试了以下操作:

  • 通过应用删除工作Library文件夹中的文件
  • 卸载应用
  • 重新安装应用

但5个文件仍会出现,这证明它们来自TestFlight安装包而非缓存的Library文件夹。请问这是什么原因?卸载应用难道不会自动删除这些文件夹和文件吗?我该如何将这些文件从安装包中移除?

原因分析
  • Xamarin构建残留:删除文件后,Xamarin的构建系统可能没彻底清理旧的构建产物,旧资源仍留在归档包中,尤其是自动签名或云构建场景下更易出现。
  • App Connect缓存:上传的构建包可能没完全替换旧资源,App Connect可能复用了之前的缓存内容,导致TestFlight分发的还是带旧文件的版本。
  • 卸载应用的作用范围:卸载确实会删除沙盒内所有文件,但你看到的文件是新安装包自带的,和之前的沙盒缓存无关。
解决办法
  • 清理项目构建缓存:
    1. 在Visual Studio/Visual Studio for Mac中执行清理解决方案,再重新生成解决方案。
    2. 手动删除项目的bin、obj目录,以及iOS项目Resources目录下的隐藏缓存文件。
  • 检查项目文件引用:
    打开iOS项目的.csproj文件,确认没有残留File3.txt、File4.txt、File5.txt的<BundleResource>条目,如有则手动删除。同时确保保留的两个文件的构建操作是BundleResource。
  • 重新生成归档包:
    清理完成后重新创建iOS归档包,归档前检查构建输出目录,确认只包含需要的两个文本文件。
  • 重新上传到App Connect:
    上传新归档包时,选择替换现有TestFlight构建或使用新的版本/构建号上传,避免App Connect复用旧缓存。
  • 安装最新TestFlight构建:
    在TestFlight中安装时,确认选择的是刚上传的最新构建版本,不要安装旧的缓存构建。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 09:41:04