Azure管道中iOS Xamarin项目的自动版本编号
对于我的项目(基于Xamarin的移动iOS应用程序),我已经设置了Azure管道构建过程。 我想为每个版本自动增加和设置ipa文件版本 在搜索Internet时,我发现建议将以下代码添加到ios project.csproj文件中:Azure管道中iOS Xamarin项目的自动版本编号,xamarin,azure-devops,xamarin.ios,Xamarin,Azure Devops,Xamarin.ios,对于我的项目(基于Xamarin的移动iOS应用程序),我已经设置了Azure管道构建过程。 我想为每个版本自动增加和设置ipa文件版本 在搜索Internet时,我发现建议将以下代码添加到ios project.csproj文件中: <Target Name="BeforeBuild" Condition=" $(SetVersion) == true "> <GetAssemblyIdentity AssemblyFiles=
<Target Name="BeforeBuild" Condition=" $(SetVersion) == true ">
<GetAssemblyIdentity AssemblyFiles="$(AssemblyPath)">
<Output TaskParameter="Assemblies" ItemName="AssemblyInfo" />
</GetAssemblyIdentity>
<PropertyGroup>
<VersionNumber>$([System.Text.RegularExpressions.Regex]::Match(%(AssemblyInfo.Version), `[^.][^.]*.[^.]*.[^.]*`))</VersionNumber>
</PropertyGroup>
<XmlPoke XmlInputPath="Resources/Info.plist" Query="//dict/key[. = 'CFBundleVersion']/following-sibling::string[1]" Value="$(BuildNumber)" />
<XmlPoke XmlInputPath="Resources/Info.plist" Query="//dict/key[. = 'CFBundleShortVersionString']/following-sibling::string[1]" Value="$(VersionNumber)" />
<Target Name="BeforeBuild" Condition=" $(SetVersion) == true ">
<XmlPoke XmlInputPath="Info.plist" Query="//dict/key[. = 'CFBundleVersion']/following-sibling::string[1]" Value="$(BuildNumber)" />
<XmlPoke XmlInputPath="Info.plist" Query="//dict/key[. = 'CFBundleShortVersionString']/following-sibling::string[1]" Value="$(VersionNumber).$(BuildNumber)" />
</Target>
如您所见,SetVersion为true
,VersionNumber为1.0
,BuildNumber为44
生成和生成二进制日志的任务如下:
- task: XamariniOS@2
inputs:
solutionFile: '**/*iOS.csproj'
signingIdentity: '$(APPLE_CERTIFICATE_SIGNING_IDENTITY)'
signingProvisioningProfileID: '$(APPLE_PROV_PROFILE_UUID)'
configuration: '$(buildConfiguration)'
msbuildArguments: "$(mobileProjectMSbuildArgumentsForIOS)"
outputDirectory: "$(outputDirectory)"
packageApp: true
args: /p:IpaPackageDir="$(outputDirectory)"
- task: PublishBuildArtifacts@1
displayName: 'Publish binary log'
inputs:
PathtoPublish: '$(Build.ArtifactStagingDirectory)'
ArtifactName: 'Binary log'
publishLocation: 'Container'
condition: succeededOrFailed()
但是,当项目使用管道建造时,该建造是绿色的,但是:
1.0.34
,它具有旧值,该值是在项目的.plist
文件中手动设置的
SetVersion
设置为true
为什么不生成二进制日志
欢迎提出任何意见
谢谢。我发现你的作业有错误XamariniOS@2任务字段
msbuildArguments
和outputDirectory
是的字段。它们的存在不是为了什么
因此,您可以尝试将/p:ipapackedir=“$(outputDirectory)”
和outputDirectory:“$(outputDirectory)”
移动到mobileProjectMSbuildArgumentsForIOS
变量
variables:
mobileProjectMSbuildArgumentsForIOS: "/p:OutputPath=$(outputDirectory) /p:IpaPackageDir="$(outputDirectory)" /p:SetVersion=true /p:VersionNumber=1.0 /p:BuildNumber=34 /bl:$(Build.ArtifactStagingDirectory)/build_iOS.binlog"
然后将msbuildArguments分配给args
字段:args:“$(MobileProject MSBuildArgumentsForios)”
请参见下面更改的XamariniOS@2任务:
- task: XamariniOS@2
inputs:
solutionFile: '**/*iOS.csproj'
signingIdentity: '$(APPLE_CERTIFICATE_SIGNING_IDENTITY)'
signingProvisioningProfileID: '$(APPLE_PROV_PROFILE_UUID)'
configuration: '$(buildConfiguration)'
args: "$(mobileProjectMSbuildArgumentsForIOS)"
packageApp: true
是的,这解决了问题。非常感谢。
- task: XamariniOS@2
inputs:
solutionFile: '**/*iOS.csproj'
signingIdentity: '$(APPLE_CERTIFICATE_SIGNING_IDENTITY)'
signingProvisioningProfileID: '$(APPLE_PROV_PROFILE_UUID)'
configuration: '$(buildConfiguration)'
args: "$(mobileProjectMSbuildArgumentsForIOS)"
packageApp: true