首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在项目文件中使用XmlPoke更新源文件已停止工作[标题已更新]

在项目文件中使用XmlPoke更新源文件已停止工作[标题已更新]
EN

Stack Overflow用户
提问于 2021-11-12 10:14:51
回答 1查看 49关注 0票数 0

在项目构建过程中更新版本号。在Visual Studio中,我们在c sharp项目中添加了类似以下内容的内容

代码语言:javascript
复制
  <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时,就开始出现这种情况

还有没有人看过这个问题?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-11-17 13:02:11

解决方案是避免在msbuild期间更改任何源文件。相反,使用预构建任务来进行任何源代码更改,例如设置版本号。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69941230

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档