【问题标题】:Xamarin cycle 7 IOS IPA output now in a datetime folderXamarin 循环 7 IOS IPA 输出现在位于日期时间文件夹中
【发布时间】:2016-09-17 02:34:10
【问题描述】:

我刚刚更新到最新版本的 Xamarin studio,但是当我尝试使用 XBuild 构建我的解决方案时,它现在通过我们的持续集成服务器在数据时间文件夹中生成 IPA 文件,(在通常的 bin\iphone \Ad-hoc 文件夹),例如:

Finisher3 2016-06-09 11-57-45\Finisher3.ipa

但是我不明白为什么它现在这样做 - 在以前的版本中它给了我一个文件如下:

Finisher3-1.68.1.1.ipa

有谁知道如何让它重新设置版本号,而不是将其放在日期时间文件夹中,这使得在我完成构建后将 IPA 复制到发布文件夹是相当不切实际的。

【问题讨论】:

    标签: c# ios xamarin xamarin.ios


    【解决方案1】:

    更新: 旧解决方案不适用于最新的 Xamarin 版本,因此不建议使用。 官方发布解决问题的信息和建议:

    https://developer.xamarin.com/releases/ios/xamarin.ios_9/xamarin.ios_9.8/#New_MSBuild_property_IpaPackageDir_to_customize_.ipa_output_location

    但是,就我而言,拥有大约 30 个构建的多台构建机器编辑构建定义或 .csproj 文件是一场噩梦,尤其是在星期五。

    这是我目前正在使用的一种解决方法。 在第 1655/1656 行之间插入此代码

    <IpaPackageDir Condition="'$(IpaPackageDir)' == ''">$(DeviceSpecificOutputPath)</IpaPackageDir>

    然后在 1661 之后插入以下行:

    &lt;IpaPackageName Condition="'$(IpaPackageName)' == '' And '$(_BundleVersion)' != ''"&gt;$(_AppBundleName)-$(_BundleVersion).ipa&lt;/IpaPackageName&gt;

    更改后文件的外观如下。第 1656 和 1662 行是新的。

    祝你好运,玩得开心!


    过时的解决方案:

    根据 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

    【讨论】:

    • 这应该是公认的答案,因为它是 Xamarin 支持提出的答案。此外,第一个可能会在某些构建系统任务(例如 Bamboo)中失败。当我发现困难的方式时。 :(
    • 干杯,前段时间我的第一个答案取得了成功,但今天我不得不回到我自己的问题,因为我已经设法更新到 Xamarin 的下一个版本 - 这当然会覆盖更改再一次......哦,有趣!
    • 好点,克里斯。让我询问支持人员是否解决了此更新中的问题。
    • 目前稳定频道的更新不包括修复,如果你安装它,你必须重新做一次
    • 我只是想知道需要多长时间才能了解包含目标的 1767 行文件? :) 谢谢@AlexSorokoletov
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多