cob*_*bey 4 msbuild xamarin.ios xamarin
如果我想要使用某种持续集成或命令行构建,并将IPA输出到自定义位置,我将如何在Xamarin.iOS中执行此操作?
谢谢!
在Xamarin发布第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>
Run Code Online (Sandbox Code Playgroud)
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>
Run Code Online (Sandbox Code Playgroud)
至
<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>
Run Code Online (Sandbox Code Playgroud)
更改 IPA 输出位置的最佳方法实际上是在构建完成后使用 MSBuild 目标将文件复制到所需位置。这样做是一种安全的方法,因为它允许设置客户位置,而无需修改 Xamarin 系统文件(这些文件可能会在更新期间更改)。
\n\n在执行以下任何步骤之前,您需要备份项目文件夹,以防 csproj 文件中的某些内容编辑不正确。
\n\n为此,您需要将以下 MSBuild 目标放在末尾、结束标记之前:
\n\n<Target Name="CopyIpa" Condition="\'$(OutputType)\' == \'Exe\' And \'$(ComputedPlatform)\' == \'iPhone\' And \'$(BuildIpa)\' == \'true\'">\n <Copy SourceFiles="$(IpaPackagePath)" DestinationFolder=\xe2\x80\x9c[PathToOutput]\xe2\x80\x9d/>\n</Target>\nRun Code Online (Sandbox Code Playgroud)\n\n这会将 IPA 从变量 $(IpaPackagePath) 复制到您设置为 DestinationFolder 的路径。
\n| 归档时间: |
|
| 查看次数: |
1187 次 |
| 最近记录: |