我刚刚更新到最新版本的Xamarin工作室,但是当我尝试使用XBuild构建我的解决方案时,通过我们的持续集成服务器,它现在在数据时间文件夹中生成IPA文件,(在通常的bin \ iphone中) \ Ad-hoc文件夹)例如:
Finisher3 2016-06-09 11-57-45\Finisher3.ipa
但是我不明白为什么现在这样做 - 在之前的版本中它给了我一个文件如下:
Finisher3-1.68.1.1.ipa
有没有人知道如何重新设置版本号,而不是将其放在日期时间文件夹中,这使得在完成构建后将IPA复制到发布文件夹是相当不切实际的。
答案 0 :(得分:10)
<强>更新强> 旧解决方案不适用于最新的Xamarin版本,不建议使用。 有关解决问题的官方信息和建议发布在此处:
然而,就我而言,拥有几台构建机器,其中包含大约30个版本的编辑构建定义或.csproj文件,这些都是一场噩梦,尤其是在星期五。
这是我目前正在使用的解决方法。 在第1655/1656行之间插入此代码
<IpaPackageDir Condition="'$(IpaPackageDir)' == ''">$(DeviceSpecificOutputPath)</IpaPackageDir>
然后在1661之后插入以下行:
<IpaPackageName Condition="'$(IpaPackageName)' == '' And '$(_BundleVersion)' != ''">$(_AppBundleName)-$(_BundleVersion).ipa</IpaPackageName>
过时的解决方案:
根据support@xamarin.com,编辑Xamarin.iOS.Common.targets
现在是建议的解决方法(Johan的回答中的选项2)。
由于接受的答案仅显示问题的原因(选项2),以下是解决问题的方法。
解决方法(在Mac上)是转到文件夹/Library/Frameworks/Xamarin.iOS.framework/Versions/Current/lib/mono/2.1/
并打开文件Xamarin.iOS.Common.targets
(或直接打开文件/Library/Frameworks/Xamarin.iOS.framework/Versions/Current/lib/mono/2.1/Xamarin.iOS.Common.targets
)。
如果您使用的是Windows,则需要编辑的文件为C:\Program Files (x86)\MSBuild\Xamarin\iOS\Xamarin.iOS.Common.targets
然后将第1607行更改为
<PropertyGroup>
<IpaPackageName Condition="'$(IpaPackageName)' != '' And !$(IpaPackageName.EndsWith ('.ipa', StringComparison.OrdinalIgnoreCase))">$(IpaPackageName).ipa</IpaPackageName>
<IpaPackageName Condition="'$(IpaPackageName)' == '' And '$(_BundleVersion)' != ''">$(_AppBundleName)-$(_BundleVersion).ipa</IpaPackageName>
<IpaPackageName Condition="'$(IpaPackageName)' == ''">$(_AppBundleName).ipa</IpaPackageName>
</PropertyGroup>
和第1734行到
OutputFile="$(OutputPath)$(IpaPackageName)"
这些更改取自之前稳定版本(5.10.3)的Xamarin.iOS.Common.targets
。