agvtool 报告“找不到 Foo.xcodeproj/../NO”

agvtool is reporting “Cannot find Foo.xcodeproj/../NO”

我使用 agvtool 来增加我的版本号。在我最近重构的 Xcode 13.0 (13A233) 项目中,出现了一个奇怪的错误:

Cannot find "Foo.xcodeproj/../NO"

例如

% agvtool next-version -all                          
Setting version of project Foo to: 
    108.

Also setting CFBundleVersion key (assuming it exists)

Updating CFBundleVersion in Info.plist(s)...

Updated CFBundleVersion in "Foo.xcodeproj/../Foo/Support files/Environments/QA/Info.plist" to 108
Updated CFBundleVersion in "Foo.xcodeproj/../FooKit/Info.plist" to 108
Updated CFBundleVersion in "Foo.xcodeproj/../FooTests/Info.plist" to 108
Cannot find "Foo.xcodeproj/../NO"

我只有这三个目标,FooFooKitFooTests,但它正在寻找另一个名为 NO 的目标。

我环顾四周,没有看到任何无关的 Info.plist 文件。我猜测 .pbxprojInfo.plist 中设置了 NO 的东西 agvtool 被错误地选为潜在目标,但我还没有弄清楚它在哪里。 -all 选项如何精确地确定哪些 Info.plist 文件需要更新?

我的 work-around 是将我的各种 Info.plist 文件中的“捆绑版本”设置为 $(CURRENT_PROJECT_VERSION):

那么我根本不需要使用 -all 选项。我只是:

% agvtool next-version                                                                  
Setting version of project Foo to: 
    126.

.plist 文件将从目标中获取版本,而不是在各自的文件中单独指定。这避免了 -all 选项的奇怪 behavior/bug。