如何阻止已删除的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分发的还是带旧文件的版本。
- 卸载应用的作用范围:卸载确实会删除沙盒内所有文件,但你看到的文件是新安装包自带的,和之前的沙盒缓存无关。
解决办法
- 清理项目构建缓存:
- 在Visual Studio/Visual Studio for Mac中执行
清理解决方案,再重新生成解决方案。 - 手动删除项目的
bin、obj目录,以及iOS项目Resources目录下的隐藏缓存文件。
- 在Visual Studio/Visual Studio for Mac中执行
- 检查项目文件引用:
打开iOS项目的.csproj文件,确认没有残留File3.txt、File4.txt、File5.txt的<BundleResource>条目,如有则手动删除。同时确保保留的两个文件的构建操作是BundleResource。 - 重新生成归档包:
清理完成后重新创建iOS归档包,归档前检查构建输出目录,确认只包含需要的两个文本文件。 - 重新上传到App Connect:
上传新归档包时,选择替换现有TestFlight构建或使用新的版本/构建号上传,避免App Connect复用旧缓存。 - 安装最新TestFlight构建:
在TestFlight中安装时,确认选择的是刚上传的最新构建版本,不要安装旧的缓存构建。
内容的提问来源于stack exchange,提问作者jho
相关产品推荐
相关产品推荐

