在项目构建过程中更新版本号。在Visual Studio中,我们在c sharp项目中添加了类似以下内容的内容
<Target Name="BeforeBuild" Condition=" $(SetVersion) == true ">
<PropertyGroup>
<IOSBundleVersion>$([System.Text.RegularExpressions.Regex]::Match($(VersionNumber), '[^.][^.]*.[^.]*.[^.]*'))</IOSBundleVersion>
</PropertyGroup>
<XmlPoke XmlInputPath="Info.plist" Query="//dict/key[. = 'CFBundleVersion']/following-sibling::string[1]" Value="$(VersionNumber)" />
<XmlPoke XmlInputPath="Info.plist" Query="//dict/key[. = 'CFBundleShortVersionString']/following-sibling::string[1]" Value="$(IOSBundleVersion)" />
</Target>这应该会更新包含版本号的文件,该版本号随后将在后续构建期间用作应用程序版本。
实际发生的情况是,源文件被更新,但msbuild使用原始文件,而不是更新后的文件。
我推测,作为第一步,msbuild已经更改为将所有项目文件加载到内存中,因此现在将忽略对磁盘上文件的任何更改。
适用于.NET框架的Microsoft (R) Build Engine版本16.11.1+3e40a09f8表现出此行为
上次工作正常msbuild 15.0
这是最初的帖子-请忽略:我们正在构建Xamarin.Forms iOS应用程序,并且已经有一段时间了。我们在Azure Devops构建步骤'Xamarin.iOS‘中通过一个参数/p:SetVersion=true /p:VersionNumber=$ (Application.Version )控制版本号。项目的info.plist部分设置基线版本(4.00.00.00) Application.Version参数正在设置(Application.Version == 4.00.00.03),日志显示正在使用该参数。然而,‘苹果应用商店发布’报告错误ITMS-90189:“冗余二进制上传。你已经上传了一个内部版本号为'4.0.0.0‘的版本,版本号为'4.0.0’。我已经手动检查了通过iOS传输器应用上传构建的.ipa工件的版本。这表明.ipa有基线版本,而不是传递给SetVersion的值。
当我们最近将托管代理从池: Azure Pipeline镜像: macOS-10.15代理:托管代理升级到镜像:macOS-11时,就开始出现这种情况
还有没有人看过这个问题?
发布于 2021-11-17 13:02:11
解决方案是避免在msbuild期间更改任何源文件。相反,使用预构建任务来进行任何源代码更改,例如设置版本号。
https://stackoverflow.com/questions/69941230
复制相似问题