MSBuild构建时如何配置manageAppVersionAndBuildNumber为false
MSBuild环境下版本/构建号锁定配置说明
manageAppVersionAndBuildNumber 是Fastlane build_app(gym工具)针对Xcode原生打包流程封装的导出阶段专属参数,MSBuild不存在同名原生构建参数,无法直接复用Xcode场景下的参数写法。
这个参数的核心作用是禁止打包流程自动覆盖、修改项目内预设的版本号与构建号,如果你是在TeamCity+Fastlane环境下用MSBuild构建Xamarin.iOS / .NET for iOS项目,要实现完全一致的效果,直接通过MSBuild的内置属性配置即可,不需要关联Xcode侧参数:
- 核心配置逻辑是关闭构建过程的版本号自动生成、锁定Info.plist中预写的版本配置,直接在你现有的MSBuild命令中追加对应
/p参数即可,修改后的命令参考:
('msbuild', CONST['...'], "/p:Configuration=\"#{CONST['...']}\"", "/p:Platform=\"#{CONST['...']}\"", "/p:BuildIpa=True", "/p:AutoGenerateBuildNumber=False", "/p:IOSVersionCodeLocked=True")
涉及的参数作用说明:
/p:BuildIpa=True:开启MSBuild的ipa打包输出能力/p:AutoGenerateBuildNumber=False:禁止构建流程自动生成、递增构建号/p:IOSVersionCodeLocked=True:锁定项目Info.plist中配置的CFBundleShortVersionString(对外版本号)、CFBundleVersion(构建号)值,构建全流程不会被工具自动篡改
补充注意事项
如果你的CI流程是MSBuild只负责编译生成xcarchive,后续单独调用xcodebuild或者Fastlane build_app 做ipa导出,那导出阶段的版本锁定还是要在xcodebuild/build_app 环节配置manageAppVersionAndBuildNumber: false;如果从编译到出ipa全流程都由MSBuild完成,仅配置上述MSBuild参数即可生效。
内容的提问来源于stack exchange,提问作者boski
相关产品推荐
相关产品推荐

