Если бы я хотел использовать какую-то непрерывную интеграцию или сборку командной строки и иметь выход IPA в настраиваемое местоположение, как бы я это сделал в Xamarin.iOS?Как изменить местоположение вывода IPA проекта Xamarin.iOS?
Спасибо!
Если бы я хотел использовать какую-то непрерывную интеграцию или сборку командной строки и иметь выход IPA в настраиваемое местоположение, как бы я это сделал в Xamarin.iOS?Как изменить местоположение вывода IPA проекта Xamarin.iOS?
Спасибо!
Лучший способ изменить местоположение вывода 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.
В выпуске 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>
О, черт побери! Спасибо за это! Off Я иду изменить свой план развертывания Bamboo ... – Marakai
Файл целей не является предлагаемым методом, поскольку он не является согласованным документом. Обновления Xamarin могут и будут перезаписывать этот файл, что приведет к сбою ваших сборок до тех пор, пока его не запомнит, чтобы его отредактировать. Я знаю, что вы это заметили, но, как правило, мы рекомендуем редактировать файл проекта. – clb