当我在我的Xcode项目中集成一个local package时,一切都很好,但是当我切换分支并要运行该应用程序时,Xcode给出了编译错误Missing package product <package name>
。当我退出Xcode并重新打开它时,一切都很好。知道这可能是什么吗? Xcode错误?
我们还通过Swift Package Manager集成了外部软件包,该软件包运行良好。那里没有问题。
该问题在post by Jesse Squires中也得到了很好的描述。
答案 0 :(得分:32)
答案 1 :(得分:28)
对我来说,我需要File> Swift Packages> Reset Package Caches
答案 2 :(得分:15)
在Xcode中,依次转到“文件”>“ Swift软件包”>“更新到最新的软件包版本”
为我工作
答案 3 :(得分:3)
在Xcode中,转到Product > Clean Build Folder
这对我有用。该问题最初是在我尝试解决删除“派生数据”文件夹后出现的另一个问题时开始的。
重新启动Xcode无效,但清理build文件夹无效。我不知道这里的其他答案是否对我有用,因为我没有尝试让他们认为清理build文件夹有效。
答案 4 :(得分:2)
在 Xcode 12.5 beta 上没有一个答案对我有用。我不得不手动删除所有 spm 包并重新添加它们。
答案 5 :(得分:1)
我不确定根本原因,但是我很定期地得到这个原因。不是最优雅的解决方案,但是“重置程序包缓存”或“更新到最新程序包版本”对我来说都不起作用。对我来说,我必须退出Xcode,并删除DerivedData。
rm -rf ~/Library/Developer/Xcode/DerivedData/*
然后重建。
答案 6 :(得分:0)
在Xcode 12.0.1(12A7300)中,此错误已修复。至少我不懂了?
答案 7 :(得分:0)
在两个不同项目的两个不同 Xcode 实例中打开相同的本地 Swift 包时,我收到此错误。通过退出 Xcode 并一次只打开一个项目,让它再次工作。
答案 8 :(得分:0)
SPM 重置包缓存与更新到最新包版本
fetch the latest possible version(based on restrictions)
更新到最新的软件包版本
reset cache(derived folder) -> Update to Latest Package Versions
重置包缓存
<path_to_derived_data>/<randomizer>/SourcePackages/checkouts/<project_name>
//e.g
/Users/alex/Library/Developer/Xcode/DerivedData/SPM-dpsmlyjrashqjefkfheppizcrgic/SourcePackages/checkouts/SPMExperiments
文件夹
this.classList.toggle("active");
答案 9 :(得分:0)
目前我的解决方法是运行 Product > Clean Build Folder (cmd-k),然后重新启动 Xcode。这是 Xcode 12.4 和 12.5 中的问题,12.5 的每个用户包缓存没有解决该问题。
File > Swift Packages > Reset Package Caches 似乎也有效,但对我来说速度较慢。
上下文:
我的一个供应商通过 SPM 分发他们的预编译二进制库。每当我在 git 开发分支之间切换时,我得到:
“二进制目标 'xyz' 提取失败:操作无法完成。(TSCBasic.StringError 错误 1。)”
对于完全不相关的包,它也会导致这些“缺少包产品”错误,这大概是因为如果一个包失败,整个 SPM 过程就会失败(“解析包图失败”),即使这些包是完全独立的。
答案 10 :(得分:0)
Xcode 源代码控制应该被启用来运行它。 Preference -> Source Control 并启用源代码控制。