2016-06-16 3 views

ответ

3

Лучший способ изменить местоположение вывода IPA - фактически использовать цель MSBuild для копирования файла в нужное место после завершения сборки. Это безопасный подход, поскольку он позволяет устанавливать местоположения клиентов без изменения системных файлов Xamarin, которые могут быть изменены во время обновления.

Прежде чем делать какие-либо шаги ниже, вам нужно создать резервную копию папки проекта, если что-то неправильно отредактировано в файле csproj.

Для достижения этой цели, вы хотите разместить следующую цель MSBuild на конце вашего файла проект, прямо перед закрывающим тегом:

<Target Name="CopyIpa" Condition="'$(OutputType)' == 'Exe' And '$(ComputedPlatform)' == 'iPhone' And '$(BuildIpa)' == 'true'"> 
    <Copy SourceFiles="$(IpaPackagePath)" DestinationFolder=“[PathToOutput]”/> 
</Target> 

Это скопирует МФА из переменных $ (IpaPackagePath) в зависимости от того, какой путь вы установили как DestinationFolder.

6

В выпуске Xamarin Cycle 7 изменилось расположение выхода файла IPA. У вас есть два варианта: первый - отредактировать файл .csproj, а в редакторе - редактировать Xamarin.iOS.Common.Targets.

1. Проект редактировать

Следующая переместит файл .IPA обратно туда, где он имел обыкновение идти. В качестве альтернативы вы можете ввести свой собственный путь в DestinationFolder

<PropertyGroup> 
    <CreateIpaDependsOn> 
     $(CreateIpaDependsOn); 
     CopyIpa 
    </CreateIpaDependsOn> 
</PropertyGroup> 
<Target Name="CopyIpa" Condition="'$(OutputType)' == 'Exe' And '$(ComputedPlatform)' == 'iPhone' And '$(BuildIpa)' == 'true'"> 
    <Copy SourceFiles="$(IpaPackagePath)" DestinationFolder="$(OutputPath)" /> 
</Target> 

2. Цели файл

Возможно, более полезным, если у вас есть много проектов IOS. Имейте в виду, что если вы обновите Xamarin, вам нужно будет сначала создать резервную копию этого файла.

На вашем Mac, откройте /Library/Frameworks/Xamarin.iOS.framework/Versions/Current/lib/mono/2.1/Xamarin.iOS.Common.targets и измените следующие строки

<PropertyGroup> 
    <_IpaOutputPath>$(DeviceSpecificOutputPath)$(_AppBundleName) $([System.DateTime]::Now.ToString('yyyy-MM-dd HH-mm-ss'))</_IpaOutputPath> 
    <_IpaOutputDir>$(_IpaOutputPath)\</_IpaOutputDir> 
    <IpaPackageName Condition="'$(IpaPackageName)' != '' And !$(IpaPackageName.EndsWith ('.ipa', StringComparison.OrdinalIgnoreCase))">$(IpaPackageName).ipa</IpaPackageName> 
    <IpaPackageName Condition="'$(IpaPackageName)' == ''">$(_AppBundleName).ipa</IpaPackageName> 
    <IpaPackagePath>$(_IpaOutputDir)$(IpaPackageName)</IpaPackagePath> 
</PropertyGroup> 

в

<PropertyGroup> 
    <_IpaOutputPath>$(OutputPath)</_IpaOutputPath> 
    <_IpaOutputDir>$(_IpaOutputPath)\</_IpaOutputDir> 
    <IpaPackageName Condition="'$(IpaPackageName)' != '' And !$(IpaPackageName.EndsWith ('.ipa', StringComparison.OrdinalIgnoreCase))">$(IpaPackageName).ipa</IpaPackageName> 
    <IpaPackageName Condition="'$(IpaPackageName)' == ''">$(_AppBundleName).ipa</IpaPackageName> 

    <IpaPackagePath>$(_IpaOutputDir)$(IpaPackageName)</IpaPackagePath> 
</PropertyGroup> 

Source

+0

О, черт побери! Спасибо за это! Off Я иду изменить свой план развертывания Bamboo ... – Marakai

+1

Файл целей не является предлагаемым методом, поскольку он не является согласованным документом. Обновления Xamarin могут и будут перезаписывать этот файл, что приведет к сбою ваших сборок до тех пор, пока его не запомнит, чтобы его отредактировать. Я знаю, что вы это заметили, но, как правило, мы рекомендуем редактировать файл проекта. – clb

Смежные вопросы