1172 строки
52 KiB
XML
1172 строки
52 KiB
XML
<!--
|
|
***********************************************************************************************
|
|
Xamarin.iOS.Common.targets
|
|
|
|
WARNING: DO NOT MODIFY this file unless you are knowledgeable about MSBuild and have
|
|
created a backup copy. Incorrect changes to this file will make it
|
|
impossible to load or build your projects from the command-line or the IDE.
|
|
|
|
This file imports the version- and platform-specific targets for the project importing
|
|
this file. This file also defines targets to produce an error if the specified targets
|
|
file does not exist, but the project is built anyway (command-line or IDE build).
|
|
|
|
Copyright (C) 2013-2016 Xamarin. All rights reserved.
|
|
***********************************************************************************************
|
|
-->
|
|
|
|
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
|
<Import Project="$(MSBuildThisFileDirectory)Xamarin.iOS.Common.props" />
|
|
|
|
<PropertyGroup>
|
|
<!-- Naming convention that relies on the fact that there will be a Microsoft.Windows.iOS.Sdk pack with the same version that the core SDK, on Windows installations only -->
|
|
<WindowsiOSSdkDirectory>$(MSBuildThisFileDirectory.Replace('Microsoft.iOS.Sdk', 'Microsoft.iOS.Windows.Sdk'))</WindowsiOSSdkDirectory>
|
|
</PropertyGroup>
|
|
|
|
<Import Project="$(MSBuildThisFileDirectory)$(MSBuildThisFileName).Before.targets"
|
|
Condition="Exists('$(MSBuildThisFileDirectory)$(MSBuildThisFileName).Before.targets')"/>
|
|
<Import Project="$(WindowsiOSSdkDirectory)$(MSBuildThisFileName).Before.targets"
|
|
Condition="Exists('$(WindowsiOSSdkDirectory)$(MSBuildThisFileName).Before.targets')"/>
|
|
|
|
<!-- *** Code Analysis Setup *** -->
|
|
<!-- Library projects aren't supported, if we enable Xamarin.Analysis on them, we'll need to revisit the rules and deactivate some (e.g XIA0002). -->
|
|
|
|
<PropertyGroup>
|
|
<!-- '$(OutputType)' == 'Exe' because we don't want to run Xamarin.Analysis on library projects, the XIA rules don't apply. -->
|
|
<XamarinAnalysisTargetsFile Condition="Exists ('$(MSBuildThisFileDirectory)Xamarin.iOS.Analysis.targets') And '$(OutputType)' == 'Exe'">$(MSBuildThisFileDirectory)Xamarin.iOS.Analysis.targets</XamarinAnalysisTargetsFile>
|
|
</PropertyGroup>
|
|
|
|
<Import Project="$(MSBuildThisFileDirectory)Xamarin.Analysis.targets"
|
|
Condition="Exists('$(MSBuildThisFileDirectory)Xamarin.Analysis.targets') And '$(OutputType)' == 'Exe'" />
|
|
|
|
<Import Project="$(MSBuildThisFileDirectory)Xamarin.Shared.targets" />
|
|
|
|
<PropertyGroup>
|
|
<_CanOutputAppBundle>False</_CanOutputAppBundle>
|
|
<_CanOutputAppBundle Condition="'$(OutputType)' == 'Exe' Or '$(IsAppExtension)' == 'true' Or '$(IsWatchApp)' == 'true'">True</_CanOutputAppBundle>
|
|
|
|
<_CanArchive>False</_CanArchive>
|
|
<_CanArchive Condition="'$(OutputType)' == 'Exe' And '$(ComputedPlatform)' == 'iPhone' And '$(IsAppExtension)' == 'false' And '$(IsWatchApp)' == 'false'">True</_CanArchive>
|
|
|
|
<_CanDeployToDeviceOrSimulator>False</_CanDeployToDeviceOrSimulator>
|
|
<_CanDeployToDeviceOrSimulator Condition="('$(OutputType)' == 'Exe' Or '$(IsAppExtension)' == 'true') And '$(IsWatchApp)' == 'false'">True</_CanDeployToDeviceOrSimulator>
|
|
|
|
<_RequireProvisioningProfile>False</_RequireProvisioningProfile>
|
|
<_RequireProvisioningProfile Condition="'$(ComputedPlatform)' == 'iPhone' Or '$(CodesignEntitlements)' != ''">True</_RequireProvisioningProfile>
|
|
|
|
<_PreparedResourceRules></_PreparedResourceRules>
|
|
<_AppBundleName>$(AssemblyName)</_AppBundleName>
|
|
</PropertyGroup>
|
|
|
|
<ItemDefinitionGroup>
|
|
<!-- MSBuild will honor this default metadata, but xbuild will not, so we still need to use CreateItem -->
|
|
<_BundleResourceWithLogicalName>
|
|
<Optimize />
|
|
</_BundleResourceWithLogicalName>
|
|
</ItemDefinitionGroup>
|
|
|
|
<!-- Insert our app bundle generation step -->
|
|
<PropertyGroup Condition="'$(_UsingXamarinSdk)' != 'true'">
|
|
<BuildDependsOn>
|
|
BuildOnlySettings;
|
|
PrepareForBuild;
|
|
_CollectBundleResources;
|
|
_OptimizePngImages;
|
|
_OptimizePropertyLists;
|
|
_OptimizeLocalizationFiles;
|
|
_PackLibraryResources;
|
|
_UnpackLibraryResources;
|
|
$(BuildDependsOn);
|
|
_GenerateBundleName;
|
|
_CleanUploaded;
|
|
_CreateAppBundle;
|
|
Codesign;
|
|
CreateIpa;
|
|
Archive;
|
|
</BuildDependsOn>
|
|
|
|
<CleanDependsOn>
|
|
$(CleanDependsOn);
|
|
_ComputeTargetArchitectures;
|
|
_CleanUploaded;
|
|
_CleanAppBundle;
|
|
_CleanDebugSymbols;
|
|
_CleanITunesArtwork;
|
|
_CleanDeviceSpecificOutput;
|
|
_CleanIntermediateToolOutput;
|
|
</CleanDependsOn>
|
|
</PropertyGroup>
|
|
|
|
<PropertyGroup>
|
|
<_IsContainerApp>false</_IsContainerApp>
|
|
<_IsContainerApp Condition="$(IsAppExtension) == 'false' And '$(IsWatchApp)' == 'false'">true</_IsContainerApp>
|
|
</PropertyGroup>
|
|
|
|
<PropertyGroup>
|
|
<OptimizePngImagesDependsOn>
|
|
_CollectPngImages;
|
|
_CoreOptimizePngImages;
|
|
_AfterCoreOptimizePngImages
|
|
</OptimizePngImagesDependsOn>
|
|
</PropertyGroup>
|
|
|
|
<Target Name="_OptimizePngImages" DependsOnTargets="$(OptimizePngImagesDependsOn)" />
|
|
|
|
<PropertyGroup>
|
|
<OptimizePropertyListsDependsOn>
|
|
_CollectPropertyLists;
|
|
_CoreOptimizePropertyLists;
|
|
_AfterCoreOptimizePropertyLists
|
|
</OptimizePropertyListsDependsOn>
|
|
</PropertyGroup>
|
|
|
|
<Target Name="_OptimizePropertyLists" DependsOnTargets="$(OptimizePropertyListsDependsOn)" />
|
|
|
|
<PropertyGroup>
|
|
<OptimizeLocalizationFilesDependsOn>
|
|
_CollectLocalizationFiles;
|
|
_CoreOptimizeLocalizationFiles;
|
|
_AfterCoreOptimizeLocalizationFiles
|
|
</OptimizeLocalizationFilesDependsOn>
|
|
</PropertyGroup>
|
|
|
|
<Target Name="_OptimizeLocalizationFiles" DependsOnTargets="$(OptimizeLocalizationFilesDependsOn)" />
|
|
|
|
<PropertyGroup Condition="'$(_UsingXamarinSdk)' != 'true'">
|
|
<CreateAppBundleDependsOn>
|
|
_DetectAppManifest;
|
|
_DetectSigningIdentity;
|
|
_CopyResourcesToBundle;
|
|
_CreateAssetPackManifest;
|
|
_SmeltMetal;
|
|
_ForgeMetal;
|
|
_TemperMetal;
|
|
_CompileCoreMLModels;
|
|
_PrepareResourceRules;
|
|
_CompileEntitlements;
|
|
_CompileAppManifest;
|
|
_GetNativeExecutableName;
|
|
_ParseBundlerArguments;
|
|
_CompileToNative;
|
|
_CompileITunesMetadata;
|
|
_CollectITunesArtwork;
|
|
_CopyITunesArtwork;
|
|
_CreateDebugSettings;
|
|
_CreateDebugConfiguration;
|
|
_CreatePkgInfo;
|
|
_CopyAppExtensionsToBundle;
|
|
_CopyWatchOS2AppsToBundle;
|
|
_ReadAppExtensionDebugSymbolProperties;
|
|
_GenerateAppExtensionDebugSymbols;
|
|
_PrepareDebugSymbolGeneration;
|
|
_GenerateDebugSymbols;
|
|
_ValidateAppBundle;
|
|
</CreateAppBundleDependsOn>
|
|
</PropertyGroup>
|
|
|
|
<PropertyGroup>
|
|
<_CodesignAppBundleDependsOn>
|
|
_EmbedProvisionProfile;
|
|
_CodesignNativeLibraries;
|
|
_CollectFrameworks;
|
|
_CodesignFrameworks;
|
|
_ReadAppExtensionCodesignProperties;
|
|
_CodesignAppExtensions;
|
|
_PrepareCodesignAppExtension;
|
|
_CalculateCodesignAppBundleInputs;
|
|
</_CodesignAppBundleDependsOn>
|
|
|
|
<CoreCodesignDependsOn>
|
|
$(_CodesignAppBundleDependsOn);
|
|
$(CoreCodesignDependsOn);
|
|
</CoreCodesignDependsOn>
|
|
|
|
<CodesignDependsOn>
|
|
_CreateAppBundle;
|
|
$(CodesignDependsOn);
|
|
</CodesignDependsOn>
|
|
</PropertyGroup>
|
|
|
|
<PropertyGroup>
|
|
<!-- Extensibility point for VS Publishing Workflow -->
|
|
<_BeforeCreateIpaForDistributionDependsOn />
|
|
|
|
<CreateIpaDependsOn>
|
|
_BeforeCreateIpaForDistribution;
|
|
_CompileEntitlements;
|
|
_CoreCreateIpa;
|
|
_PackageOnDemandResources;
|
|
_ZipIpa
|
|
</CreateIpaDependsOn>
|
|
|
|
<ArchiveDependsOn>
|
|
_CoreArchive
|
|
</ArchiveDependsOn>
|
|
</PropertyGroup>
|
|
|
|
<Target Name="ValidateAppStoreBundle" DependsOnTargets="_DetectSdkLocations;_ComputeTargetFrameworkMoniker">
|
|
<ALToolValidate
|
|
SessionId="$(BuildSessionId)"
|
|
Username="$(Username)"
|
|
Password="$(Password)"
|
|
FilePath="$(FilePath)"
|
|
TargetFrameworkMoniker="$(_ComputedTargetFrameworkMoniker)"
|
|
SdkDevPath="$(_SdkDevPath)"
|
|
/>
|
|
</Target>
|
|
|
|
<Target Name="UploadAppStoreBundle" DependsOnTargets="_DetectSdkLocations;_ComputeTargetFrameworkMoniker">
|
|
<ALToolUpload
|
|
SessionId="$(BuildSessionId)"
|
|
Username="$(Username)"
|
|
Password="$(Password)"
|
|
FilePath="$(FilePath)"
|
|
TargetFrameworkMoniker="$(_ComputedTargetFrameworkMoniker)"
|
|
SdkDevPath="$(_SdkDevPath)"
|
|
/>
|
|
</Target>
|
|
|
|
<Target Name="Archive" Condition="'$(_CanArchive)' == 'true'" DependsOnTargets="$(ArchiveDependsOn)" />
|
|
|
|
<Target Name="_BeforeCreateIpaForDistribution" Condition="'$(IsAppDistribution)' == 'true'" DependsOnTargets="$(_BeforeCreateIpaForDistributionDependsOn)" />
|
|
|
|
<Target Name="CreateIpa" Condition="'$(_CanArchive)' == 'true'" DependsOnTargets="$(CreateIpaDependsOn)" />
|
|
|
|
<Target Name="_CleanAppBundle" Condition="'$(_CanOutputAppBundle)' == 'true'" DependsOnTargets="_GenerateBundleName">
|
|
<RemoveDir SessionId="$(BuildSessionId)" Condition="'$(IsMacEnabled)' == 'true'" Directories="$(_AppBundlePath)" />
|
|
<Delete SessionId="$(BuildSessionId)" Condition="'$(IsMacEnabled)' == 'true'" Files="$(DeviceSpecificOutputPath)bundler.stamp" />
|
|
</Target>
|
|
|
|
<Target Name="_CleanUploaded" Condition="'$(_CanOutputAppBundle)' == 'true'" DependsOnTargets="_ComputeTargetArchitectures">
|
|
<Delete SessionId="$(BuildSessionId)" Condition="'$(IsMacEnabled)' == 'true'" Files="$(DeviceSpecificOutputPath).uploaded" />
|
|
</Target>
|
|
|
|
<Target Name="_CleanDebugSymbols" Condition="'$(_CanOutputAppBundle)' == 'true'" DependsOnTargets="_GenerateBundleName">
|
|
<GetDirectories SessionId="$(BuildSessionId)" Condition="'$(IsMacEnabled)' == 'true'" Path="$(DeviceSpecificOutputPath)" Pattern="*.dSYM">
|
|
<Output TaskParameter="Directories" ItemName="_DebugSymbolDir" />
|
|
</GetDirectories>
|
|
|
|
<RemoveDir SessionId="$(BuildSessionId)" Condition="'$(IsMacEnabled)' == 'true'" Directories="$(AppBundleDir).mSYM;@(_DebugSymbolDir)" />
|
|
<Delete SessionId="$(BuildSessionId)" Condition="'$(IsMacEnabled)' == 'true' And '$(IsAppExtension)' == 'false'" Files="$(DeviceSpecificOutputPath)*.bcsymbolmap" />
|
|
<Delete SessionId="$(BuildSessionId)" Condition="'$(IsMacEnabled)' == 'true' And '$(IsAppExtension)' == 'true'" Files="$(DeviceSpecificOutputPath)dsym.items" />
|
|
</Target>
|
|
|
|
<Target Name="_CleanITunesArtwork" Condition="'$(_CanArchive)' == 'true'" DependsOnTargets="_ComputeTargetArchitectures">
|
|
<Delete SessionId="$(BuildSessionId)" Condition="'$(IsMacEnabled)' == 'true'" Files="$(DeviceSpecificOutputPath)iTunesMetadata.plist;$(DeviceSpecificOutputPath)iTunesArtwork@2x;$(DeviceSpecificOutputPath)iTunesArtwork" />
|
|
</Target>
|
|
|
|
<Target Name="_CleanDeviceSpecificOutput" Condition="'$(_CanOutputAppBundle)' == 'true'">
|
|
<RemoveDir SessionId="$(BuildSessionId)" Condition="'$(IsMacEnabled)' == 'true'" Directories="$(IntermediateOutputPath)device-builds;$(OutputPath)device-builds" />
|
|
</Target>
|
|
|
|
<Target Name="_CleanIntermediateToolOutput" DependsOnTargets="_ComputeTargetArchitectures">
|
|
<RemoveDir SessionId="$(BuildSessionId)"
|
|
Condition="'$(IsMacEnabled)' == 'true'"
|
|
Directories="$(DeviceSpecificIntermediateOutputPath)actool;
|
|
$(DeviceSpecificIntermediateOutputPath)assetpacks;
|
|
$(DeviceSpecificIntermediateOutputPath)codesign;
|
|
$(DeviceSpecificIntermediateOutputPath)coremlc;
|
|
$(DeviceSpecificIntermediateOutputPath)ibtool;
|
|
$(DeviceSpecificIntermediateOutputPath)ibtool-link;
|
|
$(DeviceSpecificIntermediateOutputPath)ibtool-manifests;
|
|
$(DeviceSpecificIntermediateOutputPath)ipa;
|
|
$(DeviceSpecificIntermediateOutputPath)metal;
|
|
$(DeviceSpecificIntermediateOutputPath)optimized;
|
|
$(DeviceSpecificIntermediateOutputPath)scntool;
|
|
$(DeviceSpecificIntermediateOutputPath)TextureAtlas;
|
|
$(DeviceSpecificIntermediateOutputPath)mtouch-cache;
|
|
$(DeviceSpecificIntermediateOutputPath)" />
|
|
|
|
<ItemGroup>
|
|
<_IpaPackageFile Include="$(DeviceSpecificOutputPath)*.ipa" />
|
|
</ItemGroup>
|
|
|
|
<Delete SessionId="$(BuildSessionId)" Condition="'$(IsMacEnabled)' == 'true' And '$(IsAppExtension)' == 'true'" Files="$(DeviceSpecificOutputPath)codesign.items" />
|
|
<Delete SessionId="$(BuildSessionId)" Condition="'$(IsMacEnabled)' == 'true'" Files="@(_IpaPackageFile)" />
|
|
</Target>
|
|
|
|
<Target Name="_CreateAssetPackManifest" DependsOnTargets="_CopyResourcesToBundle">
|
|
<CreateAssetPackManifest
|
|
SessionId="$(BuildSessionId)"
|
|
Condition="'$(IsMacEnabled)' == 'true'"
|
|
AppBundleDir="$(AppBundleDir)"
|
|
InitialInstallTags="$(OnDemandResourcesInitialInstallTags)"
|
|
PrefetchOrder="$(OnDemandResourcesPrefetchOrder)"
|
|
OutputPath="$(DeviceSpecificOutputPath)"
|
|
/>
|
|
</Target>
|
|
|
|
<Target Name="_GetWatchAppBundlePath" DependsOnTargets="_GenerateBundleName;$(_GetWatchAppBundlePathDependsOn)">
|
|
<PropertyGroup>
|
|
<!-- needed for GetTargetPath/Build/Rebuild task outputs -->
|
|
<_WatchAppBundlePath>$(MSBuildProjectDirectory)\$(AppBundleDir)</_WatchAppBundlePath>
|
|
</PropertyGroup>
|
|
<ItemGroup>
|
|
<_WatchAppBundlePath Include="$(MSBuildProjectDirectory)\$(AppBundleDir)">
|
|
<!-- We need this metadata to fix the source in VS -->
|
|
<BuildSessionId>$(BuildSessionId)</BuildSessionId>
|
|
<BuildServerPath>..\..\$(BuildAppName)\$(BuildSessionId)\$(AppBundleDir)</BuildServerPath>
|
|
</_WatchAppBundlePath>
|
|
</ItemGroup>
|
|
</Target>
|
|
|
|
<Target Name="GetAppBundleDir" DependsOnTargets="_GenerateBundleName" Returns="$(AppBundleDir)"/>
|
|
|
|
<PropertyGroup>
|
|
<_CompileAppManifestDependsOn>
|
|
$(_CompileAppManifestDependsOn);
|
|
_PrepareResourceRules;
|
|
_ResolveWatchAppReferences;
|
|
_DetectDebugNetworkConfiguration;
|
|
</_CompileAppManifestDependsOn>
|
|
</PropertyGroup>
|
|
|
|
<Target Name="_CompileITunesMetadata" Condition="'$(ComputedPlatform)' == 'iPhone' And '$(IsAppExtension)' == 'false' And '$(IsWatchApp)' == 'false'"
|
|
DependsOnTargets="_DetectSdkLocations;_DetectAppManifest;_GenerateBundleName;_CompileAppManifest"
|
|
Inputs="$(_AppManifest);@(ITunesMetadata)"
|
|
Outputs="$(DeviceSPecificOutputPath)iTunesMetadata.plist" >
|
|
<CompileITunesMetadata
|
|
SessionId="$(BuildSessionId)"
|
|
Condition="'$(IsMacEnabled)' == 'true'"
|
|
AppBundleDir="$(AppBundleDir)"
|
|
ITunesMetadata="@(ITunesMetadata)"
|
|
OutputPath="$(DeviceSpecificOutputPath)iTunesMetadata.plist"
|
|
/>
|
|
</Target>
|
|
|
|
<Target Name="_CollectITunesArtwork" Condition="'$(ComputedPlatform)' == 'iPhone' And '$(IsAppExtension)' == 'false' And '$(IsWatchApp)' == 'false'">
|
|
<CollectITunesArtwork
|
|
SessionId="$(BuildSessionId)"
|
|
Condition="'$(IsMacEnabled)' == 'true'"
|
|
ITunesArtwork="@(ITunesArtwork)"
|
|
>
|
|
<Output TaskParameter="ITunesArtworkWithLogicalNames" ItemName="_ITunesArtworkWithLogicalName"/>
|
|
</CollectITunesArtwork>
|
|
</Target>
|
|
|
|
<Target Name="_CopyITunesArtwork" Condition="'$(ComputedPlatform)' == 'iPhone' And '$(IsAppExtension)' == 'false' And '$(IsWatchApp)' == 'false'"
|
|
DependsOnTargets="_CollectITunesArtwork"
|
|
Inputs="@(_ITunesArtworkWithLogicalName)" Outputs="$(DeviceSpecificOutputPath)%(_ITunesArtworkWithLogicalName.LogicalName)">
|
|
<Copy
|
|
SessionId="$(BuildSessionId)"
|
|
Condition="'$(IsMacEnabled)' == 'true'"
|
|
SourceFiles="@(_ITunesArtworkWithLogicalName)"
|
|
DestinationFiles="$(DeviceSpecificOutputPath)%(_ITunesArtworkWithLogicalName.LogicalName)"
|
|
/>
|
|
</Target>
|
|
|
|
<PropertyGroup>
|
|
<_CompileToNativeDependsOn>
|
|
_ComputeLinkMode;
|
|
_ComputeTargetFrameworkMoniker;
|
|
_DetectAppManifest;
|
|
_DetectSdkLocations;
|
|
_GenerateBundleName;
|
|
_DetectSigningIdentity;
|
|
_CompileEntitlements;
|
|
_CompileAppManifest;
|
|
_ResolveAppExtensionReferences;
|
|
_ExtendAppExtensionReferences;
|
|
_GetNativeExecutableName;
|
|
_GetCompileToNativeInputs;
|
|
_ExpandNativeReferences;
|
|
</_CompileToNativeDependsOn>
|
|
</PropertyGroup>
|
|
|
|
<Target Name="_CompileToNative" DependsOnTargets="$(_CompileToNativeDependsOn)"
|
|
Condition = "'$(IsAppDistribution)' != 'true' And '$(_UsingXamarinSdk)' != 'true'"
|
|
Inputs="@(_CompileToNativeInput);@(_FileNativeReference);@(BundleDependentFiles)"
|
|
Outputs="$(_NativeExecutable);$(DeviceSpecificOutputPath)bundler.stamp">
|
|
|
|
<MTouch
|
|
SessionId="$(BuildSessionId)"
|
|
Condition="'$(IsMacEnabled)' == 'true'"
|
|
ToolExe="$(MtouchExe)"
|
|
ToolPath="$(MtouchPath)"
|
|
AppBundleDir="$(AppBundleDir)"
|
|
Architectures="$(TargetArchitectures)"
|
|
ExecutableName="$(_ExecutableName)"
|
|
CompiledEntitlements="$(_CompiledEntitlements)"
|
|
Debug="$(_BundlerDebug)"
|
|
ExtraArgs="$(_BundlerArguments)"
|
|
FastDev="$(MtouchFastDev)"
|
|
HttpClientHandler="$(MtouchHttpClientHandler)"
|
|
I18n="$(MtouchI18n)"
|
|
IntermediateOutputPath="$(DeviceSpecificIntermediateOutputPath)mtouch-cache"
|
|
IsAppExtension="$(IsAppExtension)"
|
|
LinkDescriptions="@(LinkDescription)"
|
|
LinkerDumpDependencies="$(MtouchLinkerDumpDependencies)"
|
|
LinkMode="$(_LinkMode)"
|
|
MainAssembly="$(TargetPath)"
|
|
MinimumOSVersion="$(_MinimumOSVersion)"
|
|
NativeReferences="@(_FrameworkNativeReference);@(_FileNativeReference)"
|
|
OutputPath="$(DeviceSpecificOutputPath)"
|
|
Profiling="$(MtouchProfiling)"
|
|
ProjectDir="$(MtouchProjectDirectory)"
|
|
References="@(ReferencePath);@(_BundlerReferencePath)"
|
|
ResponseFilePath="$(DeviceSpecificIntermediateOutputPath)response-file.rsp"
|
|
SdkRoot="$(_SdkDevPath)"
|
|
SdkIsSimulator="$(_SdkIsSimulator)"
|
|
SdkVersion="$(_SdkVersion)"
|
|
SymbolsList="$(_MtouchSymbolsList)"
|
|
TargetFrameworkMoniker="$(_ComputedTargetFrameworkMoniker)"
|
|
UseLlvm="$(MtouchUseLlvm)"
|
|
UseFloat32="$(MtouchFloat32)"
|
|
UseThumb="$(MtouchUseThumb)"
|
|
EnableBitcode="$(MtouchEnableBitcode)"
|
|
EnableSGenConc="$(MtouchEnableSGenConc)"
|
|
Interpreter="$(MtouchInterpreter)"
|
|
AppExtensionReferences="@(_ResolvedAppExtensionReferences)"
|
|
ArchiveSymbols="$(MonoSymbolArchive)"
|
|
Verbosity="$(MtouchVerbosity)"
|
|
StandardOutputImportance="High"
|
|
XamarinSdkRoot="$(_XamarinSdkRoot)"
|
|
>
|
|
<Output TaskParameter="CompiledArchitectures" PropertyName="_CompiledArchitectures" />
|
|
</MTouch>
|
|
|
|
<Touch
|
|
SessionId="$(BuildSessionId)"
|
|
Condition="'$(IsMacEnabled)' == 'true'"
|
|
AlwaysCreate="true"
|
|
Files="$(DeviceSpecificOutputPath)bundler.stamp"
|
|
>
|
|
<Output TaskParameter="TouchedFiles" ItemName="FileWrites" />
|
|
</Touch>
|
|
</Target>
|
|
|
|
<Target Name="_CreateDebugSettings" Condition="'$(_BundlerDebug)' == 'true' And '$(IsWatchApp)' == 'false' And '$(_PlatformName)' != 'MacCatalyst'"
|
|
DependsOnTargets="_CopyResourcesToBundle"
|
|
Outputs="$(_AppBundlePath)Settings.bundle\Root.plist" >
|
|
<CreateDebugSettings
|
|
SessionId="$(BuildSessionId)"
|
|
Condition="'$(IsMacEnabled)' == 'true'"
|
|
AppBundleDir="$(AppBundleDir)"
|
|
DebuggerPort="$(IOSDebuggerPort)"
|
|
>
|
|
</CreateDebugSettings>
|
|
</Target>
|
|
|
|
<Target Name="_CreateDebugConfiguration" Condition="'$(_BundlerDebug)' == 'true' And '$(IsWatchApp)' == 'false'"
|
|
DependsOnTargets="_CopyResourcesToBundle;_DetectDebugNetworkConfiguration"
|
|
Outputs="$(_AppResourcesPath)MonoTouchDebugConfiguration.txt" >
|
|
<MakeDir SessionId="$(BuildSessionId)" Condition="'$(IsMacEnabled)' == 'true'" Directories="$(_AppResourcesPath)" />
|
|
<CreateDebugConfiguration
|
|
SessionId="$(BuildSessionId)"
|
|
Condition="'$(IsMacEnabled)' == 'true'"
|
|
AppBundleDir="$(_AppResourcesPath)"
|
|
DebugOverWiFi="$(IOSDebugOverWiFi)"
|
|
DebugIPAddresses="$(_DebugIPAddresses)"
|
|
DebuggerPort="$(IOSDebuggerPort)"
|
|
SdkIsSimulator="$(_SdkIsSimulator)"
|
|
>
|
|
</CreateDebugConfiguration>
|
|
</Target>
|
|
|
|
<Target Name="_CollectPngImages" DependsOnTargets="_CollectBundleResources">
|
|
<CreateItem Include="@(_BundleResourceWithLogicalName)" Condition="'%(_BundleResourceWithLogicalName.Extension)' == '.png' And '%(_BundleResourceWithLogicalName.Optimize)' == 'true'">
|
|
<Output TaskParameter="Include" ItemName="_PngImage" />
|
|
</CreateItem>
|
|
</Target>
|
|
|
|
<Target Name="_CoreOptimizePngImages"
|
|
DependsOnTargets="_CollectPngImages;_DetectSdkLocations"
|
|
Inputs="@(_PngImage)"
|
|
Outputs="@(_PngImage -> '$(DeviceSpecificIntermediateOutputPath)optimized\%(LogicalName)')">
|
|
|
|
<OptimizeImage
|
|
SessionId="$(BuildSessionId)"
|
|
Condition="'$(IsMacEnabled)' == 'true'"
|
|
ToolExe="$(PngCrushExe)"
|
|
ToolPath="$(PngCrushPath)"
|
|
SdkDevPath="$(_SdkDevPath)"
|
|
InputImages="@(_PngImage)"
|
|
OutputImages="@(_PngImage -> '$(DeviceSpecificIntermediateOutputPath)optimized\%(LogicalName)')">
|
|
<Output TaskParameter="OutputImages" ItemName="FileWrites" />
|
|
</OptimizeImage>
|
|
</Target>
|
|
|
|
<Target Name="_AfterCoreOptimizePngImages" Condition="'@(_PngImage)' != ''">
|
|
<ItemGroup>
|
|
<_BundleResourceWithLogicalName Remove="@(_PngImage)" />
|
|
</ItemGroup>
|
|
|
|
<CreateItem Include="$(DeviceSpecificIntermediateOutputPath)optimized\%(_PngImage.LogicalName)" AdditionalMetadata="LogicalName=%(_PngImage.LogicalName);Optimize='false';ResourceTags=%(_PngImage.ResourceTags)">
|
|
<Output TaskParameter="Include" ItemName="_BundleResourceWithLogicalName" />
|
|
</CreateItem>
|
|
</Target>
|
|
|
|
<Target Name="_CollectPropertyLists" DependsOnTargets="_CollectBundleResources">
|
|
<CreateItem Include="@(_BundleResourceWithLogicalName)" Condition="'%(_BundleResourceWithLogicalName.Extension)' == '.plist' And '%(_BundleResourceWithLogicalName.Optimize)' == 'true'">
|
|
<Output TaskParameter="Include" ItemName="_PropertyList" />
|
|
</CreateItem>
|
|
<ItemGroup>
|
|
<FileWrites Include="$(DeviceSpecificIntermediateOutputPath)optimized\%(_PropertyList.LogicalName)" />
|
|
</ItemGroup>
|
|
</Target>
|
|
|
|
<Target Name="_CoreOptimizePropertyLists"
|
|
DependsOnTargets="_CollectPropertyLists;_DetectSdkLocations"
|
|
Inputs="@(_PropertyList)"
|
|
Outputs="$(DeviceSpecificIntermediateOutputPath)optimized\%(_PropertyList.LogicalName)"
|
|
>
|
|
|
|
<OptimizePropertyList
|
|
SessionId="$(BuildSessionId)"
|
|
Condition="'$(IsMacEnabled)' == 'true'"
|
|
ToolExe="$(PlUtilExe)"
|
|
ToolPath="$(PlUtilPath)"
|
|
Input="%(_PropertyList.Identity)"
|
|
Output="$(DeviceSpecificIntermediateOutputPath)optimized\%(_PropertyList.LogicalName)">
|
|
</OptimizePropertyList>
|
|
</Target>
|
|
|
|
<Target Name="_AfterCoreOptimizePropertyLists" Condition="'@(_PropertyList)' != ''">
|
|
<ItemGroup>
|
|
<_BundleResourceWithLogicalName Remove="@(_PropertyList)" />
|
|
</ItemGroup>
|
|
|
|
<CreateItem Include="$(DeviceSpecificIntermediateOutputPath)optimized\%(_PropertyList.LogicalName)" AdditionalMetadata="LogicalName=%(_PropertyList.LogicalName);Optimize='false'">
|
|
<Output TaskParameter="Include" ItemName="_BundleResourceWithLogicalName" />
|
|
</CreateItem>
|
|
</Target>
|
|
|
|
<Target Name="_CollectLocalizationFiles" DependsOnTargets="_CollectBundleResources">
|
|
<CreateItem Include="@(_BundleResourceWithLogicalName)" Condition="'%(_BundleResourceWithLogicalName.Extension)' == '.strings' And '%(_BundleResourceWithLogicalName.Optimize)' == 'true'">
|
|
<Output TaskParameter="Include" ItemName="_LocalizationFile" />
|
|
</CreateItem>
|
|
<ItemGroup>
|
|
<FileWrites Include="$(DeviceSpecificIntermediateOutputPath)optimized\%(_LocalizationFile.LogicalName)" />
|
|
</ItemGroup>
|
|
</Target>
|
|
|
|
<Target Name="_CoreOptimizeLocalizationFiles"
|
|
DependsOnTargets="_CollectLocalizationFiles;_DetectSdkLocations"
|
|
Inputs="@(_LocalizationFile)"
|
|
Outputs="$(DeviceSpecificIntermediateOutputPath)optimized\%(_LocalizationFile.LogicalName)"
|
|
>
|
|
|
|
<OptimizePropertyList
|
|
SessionId="$(BuildSessionId)"
|
|
Condition="'$(IsMacEnabled)' == 'true'"
|
|
ToolExe="$(PlUtilExe)"
|
|
ToolPath="$(PlUtilPath)"
|
|
Input="%(_LocalizationFile.Identity)"
|
|
Output="$(DeviceSpecificIntermediateOutputPath)optimized\%(_LocalizationFile.LogicalName)">
|
|
</OptimizePropertyList>
|
|
</Target>
|
|
|
|
<Target Name="_AfterCoreOptimizeLocalizationFiles" Condition="'@(_LocalizationFile)' != ''">
|
|
<ItemGroup>
|
|
<_BundleResourceWithLogicalName Remove="@(_LocalizationFile)" />
|
|
</ItemGroup>
|
|
|
|
<CreateItem Include="$(DeviceSpecificIntermediateOutputPath)optimized\%(_LocalizationFile.LogicalName)" AdditionalMetadata="LogicalName=%(_LocalizationFile.LogicalName);Optimize='false'">
|
|
<Output TaskParameter="Include" ItemName="_BundleResourceWithLogicalName" />
|
|
</CreateItem>
|
|
</Target>
|
|
|
|
<Target Name="_CompileTextureAtlases" DependsOnTargets="_DetectAppManifest;_DetectSdkLocations;_BeforeCompileTextureAtlases;_ReadCoreCompileTextureAtlases;_CoreCompileTextureAtlases" />
|
|
|
|
<Target Name="_BeforeCompileTextureAtlases"
|
|
Inputs="@(AtlasTexture)"
|
|
Outputs="$(_TextureAtlasCache)">
|
|
|
|
<!-- If any AtlasTexture is newer than the generated items list, we delete them so that the _CoreCompileTextureAtlases
|
|
target runs again and updates those lists for the next run
|
|
-->
|
|
<Delete Files="$(_TextureAtlasCache)" />
|
|
</Target>
|
|
|
|
<Target Name="_ReadCoreCompileTextureAtlases"
|
|
DependsOnTargets="_BeforeCompileTextureAtlases">
|
|
|
|
<!-- If _BeforeCompileTextureAtlases did not delete the generated items lists from _CoreCompileTextureAtlases, then we read them
|
|
since that target won't run and we need to the output items that are cached in those files which includes full metadata -->
|
|
<ReadItemsFromFile File="$(_TextureAtlasCache)" Condition="Exists('$(_TextureAtlasCache)')">
|
|
<Output TaskParameter="Items" ItemName="_BundleResourceWithLogicalName" />
|
|
</ReadItemsFromFile>
|
|
</Target>
|
|
|
|
<Target Name="_CoreCompileTextureAtlases"
|
|
Inputs="@(AtlasTexture)"
|
|
Outputs="$(_TextureAtlasCache)"
|
|
DependsOnTargets="_BeforeCompileTextureAtlases">
|
|
|
|
<TextureAtlas
|
|
SessionId="$(BuildSessionId)"
|
|
Condition="'$(IsMacEnabled)' == 'true'"
|
|
ToolExe="$(TextureAtlasExe)"
|
|
ToolPath="$(TextureAtlasPath)"
|
|
AtlasTextures="@(AtlasTexture)"
|
|
IntermediateOutputPath="$(DeviceSpecificIntermediateOutputPath)"
|
|
ProjectDir="$(MSBuildProjectDirectory)"
|
|
ResourcePrefix="$(_ResourcePrefix)"
|
|
SdkDevPath="$(_SdkDevPath)"
|
|
SdkBinPath="$(_SdkBinPath)"
|
|
SdkUsrPath="$(_SdkUsrPath)">
|
|
<Output TaskParameter="BundleResources" ItemName="_BundleResourceWithLogicalName" />
|
|
|
|
<!-- Local items to be persisted to items files -->
|
|
<Output TaskParameter="BundleResources" ItemName="_TextureAtlas_BundleResources" />
|
|
</TextureAtlas>
|
|
|
|
<!-- Cached the generated outputs items for incremental build support -->
|
|
<WriteItemsToFile Items="@(_TextureAtlas_BundleResources)" ItemName="_BundleResourceWithLogicalName" File="$(_TextureAtlasCache)" Overwrite="true" IncludeMetadata="true" />
|
|
<ItemGroup>
|
|
<FileWrites Include="$(_TextureAtlasCache)" />
|
|
</ItemGroup>
|
|
</Target>
|
|
|
|
<Target Name="_DetectDebugNetworkConfiguration" Condition="'$(_BundlerDebug)' == 'true'">
|
|
<DetectDebugNetworkConfiguration
|
|
SessionId="$(BuildSessionId)"
|
|
Condition="'$(IsMacEnabled)' == 'true'"
|
|
DebugOverWiFi="$(IOSDebugOverWiFi)"
|
|
DebuggerHosts="$(IOSDebuggerHosts)"
|
|
SdkIsSimulator="$(_SdkIsSimulator)"
|
|
>
|
|
|
|
<Output TaskParameter="DebugIPAddresses" PropertyName="_DebugIPAddresses" />
|
|
</DetectDebugNetworkConfiguration>
|
|
</Target>
|
|
|
|
<Target Name="_ValidateAppBundle" Condition="'$(IsAppExtension)' == 'false' And '$(IsWatchApp)' == 'false'" DependsOnTargets="_DetectSdkLocations;_ComputeTargetFrameworkMoniker;_GenerateBundleName">
|
|
<ValidateAppBundleTask
|
|
Condition="'$(IsMacEnabled)' == 'true'"
|
|
SessionId="$(BuildSessionId)"
|
|
AppBundlePath="$(_AppBundlePath)"
|
|
SdkIsSimulator="$(_SdkIsSimulator)"
|
|
TargetFrameworkMoniker="$(_ComputedTargetFrameworkMoniker)"
|
|
/>
|
|
</Target>
|
|
|
|
<Target Name="_SeparateWatchAppReferences" BeforeTargets="AssignProjectConfiguration" Condition="'$(IsAppExtension)' == 'true' Or '$(OutputType)' == 'Exe'">
|
|
<CreateItem Include="@(ProjectReference)" PreserveExistingMetadata="true" Condition="'%(Identity)' != '' And '%(ProjectReference.IsWatchApp)' == 'true'">
|
|
<Output ItemName="_WatchAppReference" TaskParameter="Include" />
|
|
</CreateItem>
|
|
|
|
<ItemGroup>
|
|
<ProjectReference Remove="@(_WatchAppReference)" />
|
|
</ItemGroup>
|
|
|
|
<!--<Warning Text="_SeparateWatchAppReferences: '@(_WatchAppReference)'"/>-->
|
|
</Target>
|
|
|
|
<Target Name="_AssignWatchAppConfiguration" Condition="'@(_WatchAppReference)' != ''">
|
|
<!-- assign configs if building a solution file -->
|
|
<AssignProjectConfiguration
|
|
ProjectReferences = "@(_WatchAppReference)"
|
|
SolutionConfigurationContents = "$(CurrentSolutionConfigurationContents)"
|
|
Condition="'$(CurrentSolutionConfigurationContents)' != ''">
|
|
|
|
<Output TaskParameter="AssignedProjects" ItemName="_WatchAppReferenceWithConfiguration"/>
|
|
</AssignProjectConfiguration>
|
|
|
|
<!-- Else, just -->
|
|
<CreateItem Include="@(_WatchAppReference)"
|
|
Condition="'$(CurrentSolutionConfigurationContents)' == ''">
|
|
<Output TaskParameter="Include" ItemName="_WatchAppReferenceWithConfiguration"/>
|
|
</CreateItem>
|
|
|
|
<!--<Warning Text="_AssignWatchAppConfiguration: '@(_WatchAppReferenceWithConfiguration)'"/>-->
|
|
</Target>
|
|
|
|
<!-- Split iOS Watch App projects into 2 lists
|
|
_WatchAppReferenceWithConfigurationExistent: Projects existent on disk
|
|
_WatchAppReferenceWithConfigurationNonExistent: Projects non-existent on disk -->
|
|
<Target Name="_SplitWatchAppReferencesByExistent" DependsOnTargets="_AssignWatchAppConfiguration">
|
|
<CreateItem Include="@(_WatchAppReferenceWithConfiguration)" Condition="'@(_WatchAppReferenceWithConfiguration)' != ''">
|
|
<Output TaskParameter="Include" ItemName="_WatchAppReferenceWithConfigurationExistent"
|
|
Condition="Exists ('%(_WatchAppReferenceWithConfiguration.Identity)')"/>
|
|
|
|
<Output TaskParameter="Include" ItemName="_WatchAppReferenceWithConfigurationNonExistent"
|
|
Condition="!Exists ('%(_WatchAppReferenceWithConfiguration.Identity)')"/>
|
|
</CreateItem>
|
|
|
|
<!--<Warning Text="_SplitWatchAppReferencesByExistent: '@(_WatchAppReferenceWithConfigurationExistent)'"/>-->
|
|
</Target>
|
|
|
|
<Target Name="_ResolveWatchAppReferences" DependsOnTargets="_SplitWatchAppReferencesByExistent">
|
|
<PropertyGroup>
|
|
<!-- When building a .sln with msbuild, the dependent projects may not be built. So, always build
|
|
the referenced projects unless building from IDE. -->
|
|
<_BuildReferencedExtensionProjects Condition="'$(BuildingInsideVisualStudio)' != 'true'">true</_BuildReferencedExtensionProjects>
|
|
</PropertyGroup>
|
|
|
|
<!-- If the referenced projects have already been built, then just get the target paths -->
|
|
<MSBuild
|
|
Projects="@(_WatchAppReferenceWithConfigurationExistent)"
|
|
Targets="GetBundleTargetPath"
|
|
Properties="%(_WatchAppReferenceWithConfigurationExistent.SetConfiguration); %(_WatchAppReferenceWithConfigurationExistent.SetPlatform)"
|
|
Condition="'@(_WatchAppReferenceWithConfigurationExistent)' != '' and '$(_BuildReferencedExtensionProjects)' != 'true'">
|
|
|
|
<Output TaskParameter="TargetOutputs" ItemName="_ResolvedWatchAppReferences" />
|
|
</MSBuild>
|
|
|
|
<!-- Build the referenced project if required -->
|
|
<MSBuild
|
|
Projects="@(_WatchAppReferenceWithConfigurationExistent)"
|
|
Properties="%(_WatchAppReferenceWithConfigurationExistent.SetConfiguration); %(_WatchAppReferenceWithConfigurationExistent.SetPlatform)"
|
|
Condition="'@(_WatchAppReferenceWithConfigurationExistent)' != '' and '$(_BuildReferencedExtensionProjects)' == 'true' ">
|
|
|
|
<Output TaskParameter="TargetOutputs" ItemName="_ResolvedWatchAppReferences" />
|
|
</MSBuild>
|
|
|
|
<Warning Text="Referenced iOS Watch App Project %(_WatchAppReferenceWithConfigurationNonExistent.Identity) not found, ignoring."
|
|
Condition="'@(_WatchAppReferenceWithConfigurationNonExistent)' != ''"/>
|
|
|
|
<PropertyGroup>
|
|
<IsWatchExtension Condition="'$(IsAppExtension)' == 'true' And '@(_ResolvedWatchAppReferences)' != ''">True</IsWatchExtension>
|
|
</PropertyGroup>
|
|
</Target>
|
|
|
|
<Target Name="_CopyWatchOS2AppsToBundle" Condition="'$(OutputType)' == 'Exe'" DependsOnTargets="_ResolveWatchAppReferences">
|
|
<Ditto
|
|
SessionId="$(BuildSessionId)"
|
|
Condition="'$(IsMacEnabled)' == 'true' And '@(_ResolvedWatchAppReferences)' != '' And '%(_ResolvedWatchAppReferences.Identity)' != ''"
|
|
ToolExe="$(DittoExe)"
|
|
ToolPath="$(DittoPath)"
|
|
Source="@(_ResolvedWatchAppReferences)"
|
|
Destination="$(_AppBundlePath)Watch\%(_ResolvedWatchAppReferences.FileName)%(_ResolvedWatchAppReferences.Extension)"
|
|
/>
|
|
</Target>
|
|
|
|
<Target Name="_ReadAppExtensionCodesignProperties">
|
|
<ReadItemsFromFile File="%(_ResolvedAppExtensionReferences.Identity)\..\codesign.items" Condition="Exists('%(_ResolvedAppExtensionReferences.Identity)\..\codesign.items')">
|
|
<Output TaskParameter="Items" ItemName="_AppExtensionCodesignProperties" />
|
|
</ReadItemsFromFile>
|
|
</Target>
|
|
|
|
<Target Name="_CodesignAppExtensions" Condition="'$(_CanOutputAppBundle)' == 'true' And '@(_AppExtensionCodesignProperties)' != ''"
|
|
DependsOnTargets="_DetectSigningIdentity;_ReadAppExtensionCodesignProperties"
|
|
Inputs="$(_AppBundlePath)PlugIns\%(_AppExtensionCodesignProperties.Identity)\%(_AppExtensionCodesignProperties.NativeExecutable);%(_AppExtensionCodesignProperties.CodesignAppExtensionInputs)"
|
|
Outputs="$(_AppBundlePath)PlugIns\%(_AppExtensionCodesignProperties.Identity)\_CodeSignature\CodeResources">
|
|
|
|
<PropertyGroup>
|
|
<_CodesignAppExtensionsLibraryPath>$(_AppBundlePath)PlugIns\%(_AppExtensionCodesignProperties.Identity)\</_CodesignAppExtensionsLibraryPath>
|
|
</PropertyGroup>
|
|
|
|
<ItemGroup>
|
|
<_CodesignAppExtensionsLibrary
|
|
Include="$(_CodesignAppExtensionsLibraryPath)**\*.dylib;$(_CodesignAppExtensionsLibraryPath)**\*.metallib"
|
|
Exclude="$(_CodesignAppExtensionsLibraryPath)Watch\**;$(_CodesignAppExtensionsLibraryPath)PlugIns\**"
|
|
>
|
|
</_CodesignAppExtensionsLibrary>
|
|
</ItemGroup>
|
|
|
|
<Codesign
|
|
SessionId="$(BuildSessionId)"
|
|
Condition="'$(IsMacEnabled)' == 'true' And '%(_AppExtensionCodesignProperties.LibrarySigningKey)' != ''"
|
|
ToolExe="$(CodesignExe)"
|
|
ToolPath="$(CodesignPath)"
|
|
Resources="@(_CodesignAppExtensionsLibrary)"
|
|
CodesignAllocate="%(_AppExtensionCodesignProperties.CodesignAllocate)"
|
|
DisableTimestamp="%(_AppExtensionCodesignProperties.DisableTimestamp)"
|
|
Keychain="%(_AppExtensionCodesignProperties.Keychain)"
|
|
SigningKey="%(_AppExtensionCodesignProperties.LibrarySigningKey)"
|
|
StampPath="$(DeviceSpecificIntermediateOutputPath)codesign\PlugIns\%(_AppExtensionCodesignProperties.Identity)"
|
|
ExtraArgs="%(_AppExtensionCodesignProperties.ExtraArgs)"
|
|
>
|
|
</Codesign>
|
|
|
|
<Codesign
|
|
SessionId="$(BuildSessionId)"
|
|
Condition="'$(IsMacEnabled)' == 'true' And '%(_AppExtensionCodesignProperties.SigningKey)' != ''"
|
|
ToolExe="$(CodesignExe)"
|
|
ToolPath="$(CodesignPath)"
|
|
CodesignAllocate="%(_AppExtensionCodesignProperties.CodesignAllocate)"
|
|
DisableTimestamp="%(_AppExtensionCodesignProperties.DisableTimestamp)"
|
|
Keychain="%(_AppExtensionCodesignProperties.Keychain)"
|
|
Entitlements="%(_AppExtensionCodesignProperties.Entitlements)"
|
|
ResourceRules="%(_AppExtensionCodesignProperties.ResourceRules)"
|
|
Resources="$(_AppBundlePath)PlugIns\%(_AppExtensionCodesignProperties.Identity)"
|
|
SigningKey="%(_AppExtensionCodesignProperties.SigningKey)"
|
|
ExtraArgs="%(_AppExtensionCodesignProperties.ExtraArgs)"
|
|
>
|
|
</Codesign>
|
|
|
|
<Touch
|
|
SessionId="$(BuildSessionId)"
|
|
Condition="'$(IsMacEnabled)' == 'true' And ('$(_CanOutputAppBundle)' == 'true' And '%(_AppExtensionCodesignProperties.SigningKey)' != '') And Exists ('$(AppBundleDir)\..\%(_AppExtensionCodesignProperties.Identity).dSYM\Contents\Info.plist')"
|
|
Files="$(AppBundleDir)\..\%(_AppExtensionCodesignProperties.Identity).dSYM\Contents\Info.plist"
|
|
/>
|
|
<Touch
|
|
SessionId="$(BuildSessionId)"
|
|
Condition="'$(IsMacEnabled)' == 'true' And Exists ('$(_AppBundlePath)PlugIns\%(_AppExtensionCodesignProperties.Identity)\_CodeSignature\CodeResources')"
|
|
Files="$(_AppBundlePath)PlugIns\%(_AppExtensionCodesignProperties.Identity)\_CodeSignature\CodeResources"
|
|
/>
|
|
</Target>
|
|
|
|
<Target Name="_PrepareCodesignAppExtension" Condition="'$(_CanOutputAppBundle)' == 'true' And '$(IsAppExtension)' == 'true' And '@(_ResolvedAppBundleExtensions)' == ''">
|
|
<!-- For App Extensions, we delay running codesign until it has been copied into the main app bundle... -->
|
|
<PropertyGroup>
|
|
<_CompiledEntitlementsFullPath></_CompiledEntitlementsFullPath>
|
|
<_ResourceRulesFullPath></_ResourceRulesFullPath>
|
|
</PropertyGroup>
|
|
|
|
<GetFullPath SessionId="$(BuildSessionId)" Condition="'$(IsMacEnabled)' == 'true'" RelativePath="$(AppBundleDir)">
|
|
<Output TaskParameter="FullPath" PropertyName="_AppBundleFullPath" />
|
|
</GetFullPath>
|
|
|
|
<GetFullPath SessionId="$(BuildSessionId)" Condition="'$(IsMacEnabled)' == 'true' And '$(_CompiledCodesignEntitlements)' != ''" RelativePath="$(_CompiledCodesignEntitlements)">
|
|
<Output TaskParameter="FullPath" PropertyName="_CompiledEntitlementsFullPath" />
|
|
</GetFullPath>
|
|
|
|
<GetFullPath SessionId="$(BuildSessionId)" Condition="'$(IsMacEnabled)' == 'true' And '$(_PreparedResourceRules)' != ''" RelativePath="$(_PreparedResourceRules)">
|
|
<Output TaskParameter="FullPath" PropertyName="_ResourceRulesFullPath" />
|
|
</GetFullPath>
|
|
|
|
<GetFiles SessionId="$(BuildSessionId)" Condition="'$(IsMacEnabled)' == 'true'" Path="$(_AppBundleFullPath)" Pattern="*.*" Option="AllDirectories">
|
|
<Output TaskParameter="Files" ItemName="_AppExtensionBundleFiles" />
|
|
</GetFiles>
|
|
|
|
<PropertyGroup>
|
|
<!-- [System.IO.Path]::GetFileName() is safe to use -->
|
|
<_AppBundleFileName>$([System.IO.Path]::GetFileName('$(AppBundleDir)'))</_AppBundleFileName>
|
|
<_NativeExecutableFileName>$([System.IO.Path]::GetFileName('$(_NativeExecutable)'))</_NativeExecutableFileName>
|
|
|
|
<_CodesignDisableTimestamp>False</_CodesignDisableTimestamp>
|
|
<_CodesignDisableTimestamp Condition="'$(_SdkIsSimulator)' == 'true' Or '$(_BundlerDebug)' == 'true'">True</_CodesignDisableTimestamp>
|
|
|
|
<_CodesignAppExtensionInputs>@(_AppExtensionBundleFiles);$(_EntitlementsFullPath)</_CodesignAppExtensionInputs>
|
|
|
|
<_LibrarySigningKey>$(_CodeSigningKey)</_LibrarySigningKey>
|
|
<_LibrarySigningKey Condition="'$(_LibrarySigningKey)' == ''">-</_LibrarySigningKey>
|
|
</PropertyGroup>
|
|
|
|
<ItemGroup>
|
|
<_AppExtensionCodesignProperties Remove="@(_AppExtensionCodesignProperties)" />
|
|
|
|
<_AppExtensionCodesignProperties Include="$(_AppBundleFileName)">
|
|
<CodesignAppExtensionInputs>$(_CodesignAppExtensionInputs)</CodesignAppExtensionInputs>
|
|
<NativeExecutable>$(_NativeExecutableFileName)</NativeExecutable>
|
|
<CodesignAllocate>$(_CodesignAllocate)</CodesignAllocate>
|
|
<DisableTimestamp>$(_CodesignDisableTimestamp)</DisableTimestamp>
|
|
<Entitlements>$(_CompiledEntitlementsFullPath)</Entitlements>
|
|
<ResourceRules>$(_ResourceRulesFullPath)</ResourceRules>
|
|
<Keychain>$(CodesignKeychain)</Keychain>
|
|
<LibrarySigningKey>$(_LibrarySigningKey)</LibrarySigningKey>
|
|
<SigningKey>$(_CodeSigningKey)</SigningKey>
|
|
<ExtraArgs>$(CodesignExtraArgs)</ExtraArgs>
|
|
</_AppExtensionCodesignProperties>
|
|
</ItemGroup>
|
|
|
|
<WriteItemsToFile
|
|
Condition="'$(IsMacEnabled)' == 'true'"
|
|
Items="@(_AppExtensionCodesignProperties)"
|
|
ItemName="_AppExtensionCodesignProperties"
|
|
File="$(DeviceSpecificOutputPath)codesign.items"
|
|
IncludeMetadata="true"
|
|
Overwrite="true"
|
|
/>
|
|
</Target>
|
|
|
|
<Target Name="_CalculateCodesignAppBundleInputs" Condition="('$(_CanOutputAppBundle)' == 'true' And '$(_CodeSigningKey)' != '') And ('$(IsAppExtension)' == 'false' Or '@(_ResolvedAppExtensionReferences)' != '')">
|
|
<ItemGroup>
|
|
<_CodesignAppBundleInputs Include="$(_AppBundlePath)**\*.*" Exclude="$(_AppBundlePath)_CodeSignature\CodeResources" />
|
|
</ItemGroup>
|
|
</Target>
|
|
|
|
<Target Name="_CodesignAppBundle" Condition="('$(_CanOutputAppBundle)' == 'true' And '$(_CodeSigningKey)' != '') And ('$(IsAppExtension)' == 'false' Or '@(_ResolvedAppExtensionReferences)' != '')" DependsOnTargets="$(_CodesignAppBundleDependsOn)"
|
|
Inputs="@(_CodesignAppBundleInputs)" Outputs="$(_AppBundlePath)_CodeSignature\CodeResources">
|
|
|
|
<PropertyGroup>
|
|
<_CodesignDisableTimestamp>False</_CodesignDisableTimestamp>
|
|
<_CodesignDisableTimestamp Condition="'$(_SdkIsSimulator)' == 'true' Or '$(_BundlerDebug)' == 'true'">True</_CodesignDisableTimestamp>
|
|
</PropertyGroup>
|
|
|
|
<Codesign
|
|
SessionId="$(BuildSessionId)"
|
|
Condition="'$(IsMacEnabled)' == 'true'"
|
|
ToolExe="$(CodesignExe)"
|
|
ToolPath="$(CodesignPath)"
|
|
CodesignAllocate="$(_CodesignAllocate)"
|
|
DisableTimestamp="$(_CodesignDisableTimestamp)"
|
|
Keychain="$(CodesignKeychain)"
|
|
Entitlements="$(_CompiledCodesignEntitlements)"
|
|
ResourceRules="$(_PreparedResourceRules)"
|
|
Resources="$(AppBundleDir)"
|
|
SigningKey="$(_CodeSigningKey)"
|
|
ExtraArgs="$(CodesignExtraArgs)"
|
|
>
|
|
</Codesign>
|
|
|
|
<Touch
|
|
SessionId="$(BuildSessionId)"
|
|
Condition="'$(IsMacEnabled)' == 'true' And Exists ('$(AppBundleDir).dSYM\Contents\Info.plist')"
|
|
Files="$(AppBundleDir).dSYM\Contents\Info.plist"
|
|
/>
|
|
<Touch
|
|
SessionId="$(BuildSessionId)"
|
|
Condition="'$(IsMacEnabled)' == 'true' And Exists ('$(_AppBundlePath)_CodeSignature\CodeResources')"
|
|
Files="$(_AppBundlePath)_CodeSignature\CodeResources"
|
|
/>
|
|
</Target>
|
|
|
|
<Target Name="_CodesignVerify" Condition="'$(_RequireCodeSigning)' == 'true' And ('$(IsAppExtension)' == 'false' Or '@(_ResolvedAppExtensionReferences)' != '')" DependsOnTargets="_CodesignAppBundle">
|
|
<CodesignVerify
|
|
SessionId="$(BuildSessionId)"
|
|
Condition="'$(IsMacEnabled)' == 'true' And '@(_ResolvedAppExtensionReferences)' != ''"
|
|
ToolExe="$(CodesignExe)"
|
|
ToolPath="$(CodesignPath)"
|
|
CodesignAllocate="$(_CodesignAllocate)"
|
|
Resource="$(_AppBundlePath)PlugIns\%(_ResolvedAppExtensionReferences.Filename)%(_ResolvedAppExtensionReferences.Extension)"
|
|
>
|
|
</CodesignVerify>
|
|
|
|
<CodesignVerify
|
|
SessionId="$(BuildSessionId)"
|
|
Condition="'$(IsMacEnabled)' == 'true'"
|
|
ToolExe="$(CodesignExe)"
|
|
ToolPath="$(CodesignPath)"
|
|
CodesignAllocate="$(_CodesignAllocate)"
|
|
Resource="$(AppBundleDir)"
|
|
>
|
|
</CodesignVerify>
|
|
</Target>
|
|
|
|
<Target Name="_CoreCreateIpa" Condition="'$(BuildIpa)' == 'true'" DependsOnTargets="Codesign">
|
|
<RemoveDir SessionId="$(BuildSessionId)" Condition="'$(IsMacEnabled)' == 'true'" Directories="$(DeviceSpecificIntermediateOutputPath)ipa" />
|
|
|
|
<MakeDir SessionId="$(BuildSessionId)" Condition="'$(IsMacEnabled)' == 'true'" Directories="$(DeviceSpecificIntermediateOutputPath)ipa\Payload" />
|
|
|
|
<PropertyGroup>
|
|
<_IpaAppBundleDir>$(DeviceSpecificIntermediateOutputPath)ipa\Payload\$(_AppBundleName).app\</_IpaAppBundleDir>
|
|
</PropertyGroup>
|
|
|
|
<!-- Clone the compiled app bundle into the IPA's Payload directory... -->
|
|
<Ditto
|
|
SessionId="$(BuildSessionId)"
|
|
Condition="'$(IsMacEnabled)' == 'true'"
|
|
ToolExe="$(DittoExe)"
|
|
ToolPath="$(DittoPath)"
|
|
Source="$(AppBundleDir)"
|
|
Destination="$(_IpaAppBundleDir)"
|
|
/>
|
|
|
|
<FindWatchOS2AppBundle
|
|
SessionId="$(BuildSessionId)"
|
|
Condition="'$(IsMacEnabled)' == 'true' And '@(_ResolvedWatchAppReferences)' != ''"
|
|
WatchAppReferences="@(_ResolvedWatchAppReferences)"
|
|
>
|
|
<Output TaskParameter="WatchOS2AppBundle" PropertyName="_WatchOS2AppBundle"/>
|
|
</FindWatchOS2AppBundle>
|
|
|
|
<Copy
|
|
SessionId="$(BuildSessionId)"
|
|
Condition="'$(IsMacEnabled)' == 'true' And '$(_WatchOS2AppBundle)' != ''"
|
|
SourceFiles="$(_WatchOS2AppBundle)\_WatchKitStub\WK"
|
|
DestinationFolder="$(DeviceSpecificIntermediateOutputPath)ipa\WatchKitSupport2"
|
|
/>
|
|
|
|
<CollectITunesSourceFiles
|
|
SessionId="$(BuildSessionId)"
|
|
Condition="'$(IsMacEnabled)' == 'true'"
|
|
OutputPath="$(DeviceSpecificOutputPath)"
|
|
>
|
|
<Output TaskParameter="ITunesSourceFiles" ItemName="_ITunesSourceFile"/>
|
|
</CollectITunesSourceFiles>
|
|
|
|
<Copy
|
|
SessionId="$(BuildSessionId)"
|
|
Condition="'$(IsMacEnabled)' == 'true' And '@(_ITunesSourceFile)' != ''"
|
|
SourceFiles="@(_ITunesSourceFile)"
|
|
DestinationFolder="$(DeviceSpecificIntermediateOutputPath)ipa"
|
|
/>
|
|
|
|
<ItemGroup>
|
|
<_IpaPackageSource Include="$(DeviceSpecificIntermediateOutputPath)ipa\Payload" />
|
|
<_IpaPackageSource Include="$(DeviceSpecificIntermediateOutputPath)ipa\WatchKitSupport" Condition="Exists ('$(DeviceSpecificIntermediateOutputPath)ipa\WatchKitSupport\WK')" />
|
|
<_IpaPackageSource Include="$(DeviceSpecificIntermediateOutputPath)ipa\WatchKitSupport2" Condition="Exists ('$(DeviceSpecificIntermediateOutputPath)ipa\WatchKitSupport2\WK')" />
|
|
<_IpaPackageSource Include="$(DeviceSpecificIntermediateOutputPath)ipa\iTunesMetadata.plist" Condition="'$(IpaIncludeArtwork)' == 'true' And Exists ('$(DeviceSpecificIntermediateOutputPath)ipa\iTunesMetadata.plist')" />
|
|
<_IpaPackageSource Include="$(DeviceSpecificIntermediateOutputPath)ipa\iTunesArtwork@2x" Condition="'$(IpaIncludeArtwork)' == 'true' And Exists ('$(DeviceSpecificIntermediateOutputPath)ipa\iTunesArtwork@2x')" />
|
|
<_IpaPackageSource Include="$(DeviceSpecificIntermediateOutputPath)ipa\iTunesArtwork" Condition="'$(IpaIncludeArtwork)' == 'true' And Exists ('$(DeviceSpecificIntermediateOutputPath)ipa\iTunesArtwork')" />
|
|
</ItemGroup>
|
|
|
|
<PropertyGroup>
|
|
<!-- Calculate IpaPackageDir and IpaPackageName based on IpaPackagePath, if defined. -->
|
|
<IpaPackageDir Condition="'$(IpaPackagePath)' != ''">$([System.Path]::GetDirectoryName('$(IpaPackagePath)'))</IpaPackageDir>
|
|
<IpaPackageName Condition="'$(IpaPackagePath)' != ''">$([System.Path]::GetFileName('$(IpaPackagePath)'))</IpaPackageName>
|
|
|
|
<!-- Calculate an IPA package directory path if not already defined by the developer. -->
|
|
<!--<IpaPackageDir Condition="'$(IpaPackageDir)' == ''">$([System.Environment]::GetEnvironmentVariable('IPA_PACKAGE_DIR'))</IpaPackageDir>-->
|
|
<IpaPackageDir Condition="'$(IpaPackageDir)' == ''">$(DeviceSpecificOutputPath)</IpaPackageDir>
|
|
|
|
<!-- Calculate an IPA package name if not already defined by the developer. -->
|
|
<!--<IpaPackageName Condition="'$(IpaPackageName)' == ''">$([System.Environment]::GetEnvironmentVariable('IPA_PACKAGE_NAME'))</IpaPackageName>-->
|
|
<IpaPackageName Condition="'$(IpaPackageName)' != '' And !$(IpaPackageName.EndsWith ('.ipa', StringComparison.OrdinalIgnoreCase))">$(IpaPackageName).ipa</IpaPackageName>
|
|
<IpaPackageName Condition="'$(IpaPackageName)' == ''">$(_AppBundleName).ipa</IpaPackageName>
|
|
|
|
<!-- Calculate the full path of the IPA package if not already defined by the developer. -->
|
|
<!--<IpaPackagePath Condition="'$(IpaPackagePath)' == ''">$([System.Environment]::GetEnvironmentVariable('IPA_PACKAGE_PATH'))</IpaPackagePath>-->
|
|
<IpaPackagePath Condition="'$(IpaPackagePath)' == ''">$(IpaPackageDir)\$(IpaPackageName)</IpaPackagePath>
|
|
</PropertyGroup>
|
|
</Target>
|
|
|
|
<Target Name="_PackageOnDemandResources" Condition="'$(BuildIpa)' == 'true' And '$(EnableOnDemandResources)' == 'true' And ('$(_DistributionType)' == 'AppStore' Or '$(_DistributionType)' == 'AdHoc')" >
|
|
<PropertyGroup>
|
|
<_PayloadDir>$(DeviceSpecificIntermediateOutputPath)ipa\Payload\</_PayloadDir>
|
|
<_IpaAppBundleDir>$(_PayloadDir)$(_AppBundleName).app\</_IpaAppBundleDir>
|
|
|
|
<_IntermediateODRDir Condition="'$(_DistributionType)' == 'AppStore'">$(_PayloadDir)OnDemandResources\</_IntermediateODRDir>
|
|
<_IntermediateODRDir Condition="'$(_DistributionType)' == 'AdHoc' And '$(EmbedOnDemandResources)' == 'true'">$(_IpaAppBundleDir)OnDemandResources\</_IntermediateODRDir>
|
|
<_IntermediateODRDir Condition="'$(_DistributionType)' == 'AdHoc' And '$(EmbedOnDemandResources)' == 'false'">$(DeviceSpecificIntermediateOutputPath)OnDemandResourcesPackage\OnDemandResources\</_IntermediateODRDir>
|
|
|
|
<OnDemandResourcesUrl Condition="'$(OnDemandResourcesUrl)' == '' And '$(_DistributionType)' == 'AdHoc' And '$(EmbedOnDemandResources)' == 'true'">OnDemandResources</OnDemandResourcesUrl>
|
|
|
|
<IsStreamable>false</IsStreamable>
|
|
<IsStreamable Condition="'$(EmbedOnDemandResources)' == 'false'">true</IsStreamable>
|
|
|
|
<_CodesignDisableTimestamp>False</_CodesignDisableTimestamp>
|
|
<_CodesignDisableTimestamp Condition="'$(_SdkIsSimulator)' == 'true' Or '$(_BundlerDebug)' == 'true'">True</_CodesignDisableTimestamp>
|
|
</PropertyGroup>
|
|
|
|
<RemoveDir SessionId="$(BuildSessionId)" Condition="'$(IsMacEnabled)' == 'true'" Directories="$(_IntermediateODRDir)" />
|
|
<MakeDir SessionId="$(BuildSessionId)" Condition="'$(IsMacEnabled)' == 'true' And Exists('$(DeviceSpecificOutputPath)OnDemandResources\')" Directories="$(_IntermediateODRDir)" />
|
|
|
|
<!-- Clone the compiled assetpack bundle... -->
|
|
<Ditto
|
|
SessionId="$(BuildSessionId)"
|
|
Condition="'$(IsMacEnabled)' == 'true' And Exists('$(DeviceSpecificOutputPath)OnDemandResources\')"
|
|
ToolExe="$(DittoExe)"
|
|
ToolPath="$(DittoPath)"
|
|
Source="$(DeviceSpecificOutputPath)OnDemandResources\"
|
|
Destination="$(_IntermediateODRDir)"
|
|
/>
|
|
|
|
<!-- Look for the *.assetpack folders in the ODR folder -->
|
|
<CollectAssetPacks
|
|
SessionId="$(BuildSessionId)"
|
|
Condition="'$(IsMacEnabled)' == 'true' And Exists('$(_IntermediateODRDir)')"
|
|
OnDemandResourcesPath="$(_IntermediateODRDir)"
|
|
>
|
|
|
|
<Output TaskParameter="AssetPacks" ItemName="_AssetPack"/>
|
|
</CollectAssetPacks>
|
|
|
|
<ItemGroup>
|
|
<_AssetPack>
|
|
<_DirectoryName>$([System.IO.Path]::GetDirectoryName('%(Identity)'))</_DirectoryName>
|
|
</_AssetPack>
|
|
<_AssetPack>
|
|
<DirectoryName>$([System.IO.Path]::GetFileName('%(_AssetPack._DirectoryName)'))</DirectoryName>
|
|
</_AssetPack>
|
|
</ItemGroup>
|
|
|
|
<!-- Sign assetpacks -->
|
|
<Codesign
|
|
SessionId="$(BuildSessionId)"
|
|
Condition="'$(IsMacEnabled)' == 'true' And '@(_AssetPack)' != '' And '$(_DistributionType)' == 'AppStore'"
|
|
ToolExe="$(CodesignExe)"
|
|
ToolPath="$(CodesignPath)"
|
|
CodesignAllocate="$(_CodesignAllocate)"
|
|
DisableTimestamp="$(_CodesignDisableTimestamp)"
|
|
Keychain="$(CodesignKeychain)"
|
|
Entitlements="$(_CompiledCodesignEntitlements)"
|
|
Resources="@(_AssetPack)"
|
|
SigningKey="$(_CodeSigningKey)"
|
|
ExtraArgs="$(CodesignExtraArgs)"
|
|
>
|
|
</Codesign>
|
|
|
|
<WriteAssetPackManifest
|
|
SessionId="$(BuildSessionId)"
|
|
Condition="'$(IsMacEnabled)' == 'true' And '$(_DistributionType)' == 'AdHoc' And Exists('$(_IntermediateODRDir)')"
|
|
TemplatePath="$(_IpaAppBundleDir)AssetPackManifestTemplate.plist"
|
|
OutputFile="$(_IpaAppBundleDir)AssetPackManifest.plist"
|
|
OnDemandResourceUrl="$(OnDemandResourcesUrl)"
|
|
IsStreamable="$(IsStreamable)"
|
|
/>
|
|
|
|
<Delete SessionId="$(BuildSessionId)" Condition="'$(IsMacEnabled)' == 'true' And '$(_DistributionType)' == 'AdHoc' And Exists('$(_IntermediateODRDir)')" Files="$(_IpaAppBundleDir)AssetPackManifestTemplate.plist" />
|
|
|
|
<!-- Re-sign app bundle if anything changed inside of it -->
|
|
<Codesign
|
|
SessionId="$(BuildSessionId)"
|
|
Condition="'$(IsMacEnabled)' == 'true' And '$(_DistributionType)' == 'AdHoc' And Exists('$(_IntermediateODRDir)')"
|
|
ToolExe="$(CodesignExe)"
|
|
ToolPath="$(CodesignPath)"
|
|
CodesignAllocate="$(_CodesignAllocate)"
|
|
DisableTimestamp="$(_CodesignDisableTimestamp)"
|
|
Keychain="$(CodesignKeychain)"
|
|
Entitlements="$(_CompiledCodesignEntitlements)"
|
|
ResourceRules="$(_PreparedResourceRules)"
|
|
Resources="$(_IpaAppBundleDir)"
|
|
SigningKey="$(_CodeSigningKey)"
|
|
ExtraArgs="$(CodesignExtraArgs)"
|
|
/>
|
|
|
|
<RemoveDir SessionId="$(BuildSessionId)" Condition="'$(IsMacEnabled)' == 'true' And '$(EmbedOnDemandResources)' == 'false'" Directories="$(IpaPackageDir)\OnDemandResources\" />
|
|
<MakeDir SessionId="$(BuildSessionId)" Condition="'$(IsMacEnabled)' == 'true' And '$(EmbedOnDemandResources)' == 'false'" Directories="$(IpaPackageDir)\OnDemandResources\" />
|
|
|
|
<CreateAssetPack
|
|
SessionId="$(BuildSessionId)"
|
|
Condition="'$(IsMacEnabled)' == 'true' And '$(EmbedOnDemandResources)' == 'false'"
|
|
ToolExe="$(ZipExe)"
|
|
ToolPath="$(ZipPath)"
|
|
Source="%(_AssetPack.Identity)"
|
|
OutputFile="$(IpaPackageDir)OnDemandResources\%(_AssetPack.DirectoryName)"
|
|
/>
|
|
|
|
<Copy
|
|
SessionId="$(BuildSessionId)"
|
|
Condition="'$(IsMacEnabled)' == 'true' And '$(EmbedOnDemandResources)' == 'false'"
|
|
SourceFiles="$(_IpaAppBundleDir)AssetPackManifest.plist"
|
|
DestinationFolder="$(IpaPackageDir)\OnDemandResources\"
|
|
/>
|
|
</Target>
|
|
|
|
<Target Name="_ZipIpa" Condition="'$(BuildIpa)' == 'true'">
|
|
<MakeDir SessionId="$(BuildSessionId)" Condition="'$(IsMacEnabled)' == 'true'" Directories="$(IpaPackageDir)" />
|
|
<Delete SessionId="$(BuildSessionId)" Condition="'$(IsMacEnabled)' == 'true'" Files="$(IpaPackagePath)" />
|
|
|
|
<Zip
|
|
SessionId="$(BuildSessionId)"
|
|
Condition="'$(IsMacEnabled)' == 'true'"
|
|
ToolExe="$(ZipExe)"
|
|
ToolPath="$(ZipPath)"
|
|
Recursive="true"
|
|
Symlinks="true"
|
|
Sources="@(_IpaPackageSource)"
|
|
OutputFile="$(IpaPackagePath)"
|
|
WorkingDirectory="$(DeviceSpecificIntermediateOutputPath)ipa"
|
|
>
|
|
<Output TaskParameter="OutputFile" ItemName="FileWrites" />
|
|
</Zip>
|
|
</Target>
|
|
|
|
<Target Name="_CoreArchive" Condition="'$(ArchiveOnBuild)' == 'true'" DependsOnTargets="Codesign">
|
|
<CollectITunesSourceFiles
|
|
SessionId="$(BuildSessionId)"
|
|
Condition="'$(IsMacEnabled)' == 'true' And '@(_ITunesSourceFile)' == ''"
|
|
OutputPath="$(DeviceSpecificOutputPath)"
|
|
>
|
|
<Output TaskParameter="ITunesSourceFiles" PropertyName="_ITunesSourceFile"/>
|
|
</CollectITunesSourceFiles>
|
|
|
|
<Archive
|
|
SessionId="$(BuildSessionId)"
|
|
Condition="'$(IsMacEnabled)' == 'true'"
|
|
AppBundleDir="$(AppBundleDir)"
|
|
AppExtensionReferences="@(_ResolvedAppExtensionReferences)"
|
|
InsightsApiKey="$(XamarinInsightsApiKey)"
|
|
ITunesSourceFiles="@(_ITunesSourceFile)"
|
|
OutputPath="$(DeviceSpecificOutputPath)"
|
|
ProjectName="$(MSBuildProjectName)"
|
|
ProjectGuid="$(ProjectGuid)"
|
|
ProjectTypeGuids="$(ProjectTypeGuids)"
|
|
SolutionPath="$(SolutionPath)"
|
|
SigningKey="$(_CodeSigningKey)"
|
|
WatchAppReferences="@(_ResolvedWatchAppReferences)"
|
|
>
|
|
<Output TaskParameter="ArchiveDir" PropertyName="ArchiveDir"/>
|
|
</Archive>
|
|
</Target>
|
|
|
|
<Import Project="$(MSBuildThisFileDirectory)$(MSBuildThisFileName).After.targets"
|
|
Condition="Exists('$(MSBuildThisFileDirectory)$(MSBuildThisFileName).After.targets')"/>
|
|
<Import Project="$(WindowsiOSSdkDirectory)$(MSBuildThisFileName).After.targets"
|
|
Condition="Exists('$(WindowsiOSSdkDirectory)$(MSBuildThisFileName).After.targets')"/>
|
|
|
|
</Project>
|