[msbuild] Share the app extensions targets between iOS and Mac. (#10039)
* Share the following targets: * _ResolveAppExtensionReferences * _SplitAppExtensionReferencesByExistent * _AssignAppExtensionConfiguration * _SeparateAppExtensionReferences * _CopyAppExtensionsToBundle The first four were pretty much identical between iOS and Mac already, and needed very few changes. The latter, _CopyAppExtensionsToBundle, required a little bit of tweaking to the targets to make sure it works for both iOS and Mac: * Removed the conditions on the Ditto task to check if we have app extensions - this is unnecessary because Inputs/Outputs on the target itself (which weren't there when the Ditto task conditions were written). * Added a '_PlaceAppExtensions' target that calculates where in the container's app bundle extensions should be placed (the '_AppExtensionRoot' property), and the name of the containing folder (the 'ContainerName' metadata).
This commit is contained in:
Родитель
32f360ed42
Коммит
354beec69c
|
@ -386,106 +386,8 @@ Copyright (C) 2014 Xamarin. All rights reserved.
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
</Target>
|
</Target>
|
||||||
|
|
||||||
<Target Name="_CopyAppExtensionsToBundle" Condition="'$(IsAppExtension)' != 'true'" DependsOnTargets="_ExtendAppExtensionReferences">
|
|
||||||
<MakeDir Directories="$(_AppBundlePath)Contents\PlugIns" Condition="'%(_ResolvedAppExtensionReferences.Extension)' == '.appex'" />
|
|
||||||
<MakeDir Directories="$(_AppBundlePath)Contents\XPCServices" Condition="'%(_ResolvedAppExtensionReferences.Extension)' == '.xpc'" />
|
|
||||||
|
|
||||||
<Ditto
|
|
||||||
SessionId="$(BuildSessionId)"
|
|
||||||
Condition="'@(_ResolvedAppExtensionReferences)' != '' And '%(_ResolvedAppExtensionReferences.Identity)' != '' And '%(_ResolvedAppExtensionReferences.Extension)' == '.appex' And '$(IsMacEnabled)' == 'true'"
|
|
||||||
ToolExe="$(DittoExe)"
|
|
||||||
ToolPath="$(DittoPath)"
|
|
||||||
Source="@(_ResolvedAppExtensionReferences)"
|
|
||||||
Destination="$(_AppBundlePath)Contents\PlugIns\%(_ResolvedAppExtensionReferences.FileName)%(_ResolvedAppExtensionReferences.Extension)"
|
|
||||||
/>
|
|
||||||
|
|
||||||
<Ditto
|
|
||||||
SessionId="$(BuildSessionId)"
|
|
||||||
Condition="'@(_ResolvedAppExtensionReferences)' != '' And '%(_ResolvedAppExtensionReferences.Identity)' != '' And '%(_ResolvedAppExtensionReferences.Extension)' == '.xpc' And '$(IsMacEnabled)' == 'true'"
|
|
||||||
ToolExe="$(DittoExe)"
|
|
||||||
ToolPath="$(DittoPath)"
|
|
||||||
Source="@(_ResolvedAppExtensionReferences)"
|
|
||||||
Destination="$(_AppBundlePath)Contents\XPCServices\%(_ResolvedAppExtensionReferences.FileName)%(_ResolvedAppExtensionReferences.Extension)"
|
|
||||||
/>
|
|
||||||
</Target>
|
|
||||||
|
|
||||||
<Import Project="$(MSBuildThisFileDirectory)Xamarin.Mac.msbuild.targets" />
|
<Import Project="$(MSBuildThisFileDirectory)Xamarin.Mac.msbuild.targets" />
|
||||||
|
|
||||||
<Target Name="_SeparateAppExtensionReferences" BeforeTargets="AssignProjectConfiguration" Condition="'$(IsAppExtension)' != 'true'">
|
|
||||||
<CreateItem Include="@(ProjectReference)" PreserveExistingMetadata="true" Condition="'%(Identity)' != '' And '%(ProjectReference.IsAppExtension)' == 'true'">
|
|
||||||
<Output ItemName="_AppExtensionReference" TaskParameter="Include" />
|
|
||||||
</CreateItem>
|
|
||||||
|
|
||||||
<ItemGroup>
|
|
||||||
<ProjectReference Remove="@(_AppExtensionReference)" />
|
|
||||||
</ItemGroup>
|
|
||||||
|
|
||||||
<!--<Warning Text="_SeparateAppExtensionReferences: @(_AppExtensionReference)"/>-->
|
|
||||||
</Target>
|
|
||||||
|
|
||||||
<Target Name="_AssignAppExtensionConfiguration" Condition="'@(_AppExtensionReference)' != ''">
|
|
||||||
<!-- assign configs if building a solution file -->
|
|
||||||
<AssignProjectConfiguration
|
|
||||||
ProjectReferences = "@(_AppExtensionReference)"
|
|
||||||
SolutionConfigurationContents = "$(CurrentSolutionConfigurationContents)"
|
|
||||||
Condition="'$(CurrentSolutionConfigurationContents)' != ''">
|
|
||||||
|
|
||||||
<Output TaskParameter="AssignedProjects" ItemName="_AppExtensionReferenceWithConfiguration"/>
|
|
||||||
</AssignProjectConfiguration>
|
|
||||||
|
|
||||||
<!-- Else, just -->
|
|
||||||
<CreateItem Include="@(_AppExtensionReference)" Condition="'$(CurrentSolutionConfigurationContents)' == ''">
|
|
||||||
<Output TaskParameter="Include" ItemName="_AppExtensionReferenceWithConfiguration"/>
|
|
||||||
</CreateItem>
|
|
||||||
|
|
||||||
<!--<Warning Text="_AssignAppExtensionConfiguration: @(_AppExtensionReferenceWithConfiguration)"/>-->
|
|
||||||
</Target>
|
|
||||||
|
|
||||||
<!-- Split Mac App Extension projects into 2 lists
|
|
||||||
_AppExtensionReferenceWithConfigurationExistent: Projects existent on disk
|
|
||||||
_AppExtensionReferenceWithConfigurationNonExistent: Projects non-existent on disk -->
|
|
||||||
<Target Name="_SplitAppExtensionReferencesByExistent" DependsOnTargets="_AssignAppExtensionConfiguration">
|
|
||||||
<CreateItem Include="@(_AppExtensionReferenceWithConfiguration)" Condition="'@(_AppExtensionReferenceWithConfiguration)' != ''">
|
|
||||||
<Output TaskParameter="Include" ItemName="_AppExtensionReferenceWithConfigurationExistent"
|
|
||||||
Condition="Exists ('%(_AppExtensionReferenceWithConfiguration.Identity)')"/>
|
|
||||||
|
|
||||||
<Output TaskParameter="Include" ItemName="_AppExtensionReferenceWithConfigurationNonExistent"
|
|
||||||
Condition="!Exists ('%(_AppExtensionReferenceWithConfiguration.Identity)')"/>
|
|
||||||
</CreateItem>
|
|
||||||
|
|
||||||
<!--<Warning Text="_SplitAppExtensionReferencesByExistent: @(_AppExtensionReferenceWithConfigurationExistent)"/>-->
|
|
||||||
</Target>
|
|
||||||
|
|
||||||
<Target Name="_ResolveAppExtensionReferences" DependsOnTargets="_SplitAppExtensionReferencesByExistent">
|
|
||||||
<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="@(_AppExtensionReferenceWithConfigurationExistent)"
|
|
||||||
Targets="GetBundleTargetPath"
|
|
||||||
Properties="%(_AppExtensionReferenceWithConfigurationExistent.SetConfiguration); %(_AppExtensionReferenceWithConfigurationExistent.SetPlatform)"
|
|
||||||
Condition="'@(_AppExtensionReferenceWithConfigurationExistent)' != '' and '$(_BuildReferencedExtensionProjects)' != 'true'">
|
|
||||||
|
|
||||||
<Output TaskParameter="TargetOutputs" ItemName="_ResolvedAppExtensionReferences" Condition="'%(_AppExtensionReferenceWithConfigurationExistent.ReferenceOutputAssembly)' != 'false'"/>
|
|
||||||
</MSBuild>
|
|
||||||
|
|
||||||
<!-- Building a project directly, build the referenced projects also -->
|
|
||||||
<MSBuild
|
|
||||||
Projects="@(_AppExtensionReferenceWithConfigurationExistent)"
|
|
||||||
Properties="%(_AppExtensionReferenceWithConfigurationExistent.SetConfiguration); %(_AppExtensionReferenceWithConfigurationExistent.SetPlatform)"
|
|
||||||
Condition="'@(_AppExtensionReferenceWithConfigurationExistent)' != '' and '$(_BuildReferencedExtensionProjects)' == 'true'">
|
|
||||||
|
|
||||||
<Output TaskParameter="TargetOutputs" ItemName="_ResolvedAppExtensionReferences" Condition="'%(_AppExtensionReferenceWithConfigurationExistent.ReferenceOutputAssembly)' != 'false'"/>
|
|
||||||
</MSBuild>
|
|
||||||
|
|
||||||
<Warning Text="Referenced Mac App Extension Project %(_AppExtensionReferenceWithConfigurationNonExistent.Identity) not found, ignoring."
|
|
||||||
Condition="'@(_AppExtensionReferenceWithConfigurationNonExistent)' != ''"/>
|
|
||||||
</Target>
|
|
||||||
|
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<ArchiveDependsOn>
|
<ArchiveDependsOn>
|
||||||
_CoreArchive
|
_CoreArchive
|
||||||
|
|
|
@ -912,6 +912,124 @@ Copyright (C) 2018 Microsoft. All rights reserved.
|
||||||
</PrepareResourceRules>
|
</PrepareResourceRules>
|
||||||
</Target>
|
</Target>
|
||||||
|
|
||||||
|
<!-- App extensions -->
|
||||||
|
|
||||||
|
<Target Name="_AssignAppExtensionConfiguration" Condition="'@(_AppExtensionReference)' != ''">
|
||||||
|
<!-- assign configs if building a solution file -->
|
||||||
|
<AssignProjectConfiguration
|
||||||
|
ProjectReferences = "@(_AppExtensionReference)"
|
||||||
|
SolutionConfigurationContents = "$(CurrentSolutionConfigurationContents)"
|
||||||
|
Condition="'$(CurrentSolutionConfigurationContents)' != ''">
|
||||||
|
|
||||||
|
<Output TaskParameter="AssignedProjects" ItemName="_AppExtensionReferenceWithConfiguration"/>
|
||||||
|
</AssignProjectConfiguration>
|
||||||
|
|
||||||
|
<!-- Else, just -->
|
||||||
|
<CreateItem Include="@(_AppExtensionReference)"
|
||||||
|
Condition="'$(CurrentSolutionConfigurationContents)' == ''">
|
||||||
|
<Output TaskParameter="Include" ItemName="_AppExtensionReferenceWithConfiguration"/>
|
||||||
|
</CreateItem>
|
||||||
|
</Target>
|
||||||
|
|
||||||
|
<Target Name="_SeparateAppExtensionReferences" BeforeTargets="AssignProjectConfiguration">
|
||||||
|
<CreateItem Include="@(ProjectReference)" PreserveExistingMetadata="true" Condition="'%(Identity)' != '' And '%(ProjectReference.IsAppExtension)' == 'true'">
|
||||||
|
<Output ItemName="_AppExtensionReference" TaskParameter="Include" />
|
||||||
|
</CreateItem>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<ProjectReference Remove="@(_AppExtensionReference)" />
|
||||||
|
</ItemGroup>
|
||||||
|
</Target>
|
||||||
|
|
||||||
|
<!-- Split App Extension projects into 2 lists
|
||||||
|
_AppExtensionReferenceWithConfigurationExistent: Projects existent on disk
|
||||||
|
_AppExtensionReferenceWithConfigurationNonExistent: Projects non-existent on disk -->
|
||||||
|
<Target Name="_SplitAppExtensionReferencesByExistent" DependsOnTargets="_AssignAppExtensionConfiguration">
|
||||||
|
<CreateItem Include="@(_AppExtensionReferenceWithConfiguration)" Condition="'@(_AppExtensionReferenceWithConfiguration)' != ''">
|
||||||
|
<Output TaskParameter="Include" ItemName="_AppExtensionReferenceWithConfigurationExistent"
|
||||||
|
Condition="Exists ('%(_AppExtensionReferenceWithConfiguration.Identity)')"/>
|
||||||
|
|
||||||
|
<Output TaskParameter="Include" ItemName="_AppExtensionReferenceWithConfigurationNonExistent"
|
||||||
|
Condition="!Exists ('%(_AppExtensionReferenceWithConfiguration.Identity)')"/>
|
||||||
|
</CreateItem>
|
||||||
|
</Target>
|
||||||
|
|
||||||
|
<Target Name="_ResolveAppExtensionReferences" DependsOnTargets="_SplitAppExtensionReferencesByExistent">
|
||||||
|
<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="@(_AppExtensionReferenceWithConfigurationExistent)"
|
||||||
|
Targets="GetBundleTargetPath"
|
||||||
|
Properties="%(_AppExtensionReferenceWithConfigurationExistent.SetConfiguration); %(_AppExtensionReferenceWithConfigurationExistent.SetPlatform)"
|
||||||
|
Condition="'@(_AppExtensionReferenceWithConfigurationExistent)' != '' and '$(_BuildReferencedExtensionProjects)' != 'true'">
|
||||||
|
|
||||||
|
<Output TaskParameter="TargetOutputs" ItemName="_ResolvedAppExtensionReferences" Condition="'%(_AppExtensionReferenceWithConfigurationExistent.ReferenceOutputAssembly)' != 'false'"/>
|
||||||
|
</MSBuild>
|
||||||
|
|
||||||
|
<!-- Build the referenced project if required -->
|
||||||
|
<MSBuild
|
||||||
|
Projects="@(_AppExtensionReferenceWithConfigurationExistent)"
|
||||||
|
Properties="%(_AppExtensionReferenceWithConfigurationExistent.SetConfiguration); %(_AppExtensionReferenceWithConfigurationExistent.SetPlatform)"
|
||||||
|
Condition="'@(_AppExtensionReferenceWithConfigurationExistent)' != '' and '$(_BuildReferencedExtensionProjects)' == 'true' ">
|
||||||
|
|
||||||
|
<Output TaskParameter="TargetOutputs" ItemName="_ResolvedAppExtensionReferences" Condition="'%(_AppExtensionReferenceWithConfigurationExistent.ReferenceOutputAssembly)' != 'false'"/>
|
||||||
|
</MSBuild>
|
||||||
|
|
||||||
|
<Warning Text="Referenced $(_PlatformName) App Extension Project %(_AppExtensionReferenceWithConfigurationNonExistent.Identity) not found, ignoring."
|
||||||
|
Condition="'@(_AppExtensionReferenceWithConfigurationNonExistent)' != ''"/>
|
||||||
|
</Target>
|
||||||
|
|
||||||
|
<Target Name="_PlaceAppExtensions" DependsOnTargets="_ExtendAppExtensionReferences;_ResolveAppExtensionReferences">
|
||||||
|
<ItemGroup>
|
||||||
|
<!-- Add a 'ContainerName' metadata to indicate where the extension should go inside the container's app bundle -->
|
||||||
|
<_ResolvedAppExtensionReferences Condition="'%(_ResolvedAppExtensionReferences.Extension)' == '.appex'">
|
||||||
|
<ContainerName>PlugIns</ContainerName>
|
||||||
|
</_ResolvedAppExtensionReferences>
|
||||||
|
<_ResolvedAppExtensionReferences Condition="'%(_ResolvedAppExtensionReferences.Extension)' == '.xpc'">
|
||||||
|
<ContainerName>XPCServices</ContainerName>
|
||||||
|
</_ResolvedAppExtensionReferences>
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
|
<PropertyGroup>
|
||||||
|
<_AppExtensionRoot Condition="'$(_PlatformName)' == 'macOS'">$(_AppBundlePath)Contents\</_AppExtensionRoot>
|
||||||
|
<_AppExtensionRoot Condition="'$(_PlatformName)' != 'macOS'">$(_AppBundlePath)</_AppExtensionRoot>
|
||||||
|
</PropertyGroup>
|
||||||
|
</Target>
|
||||||
|
|
||||||
|
<Target Name="_CopyAppExtensionsToBundle"
|
||||||
|
DependsOnTargets="_ExtendAppExtensionReferences;_ResolveAppExtensionReferences;_PlaceAppExtensions"
|
||||||
|
Inputs="@(_ResolvedAppExtensionReferences)"
|
||||||
|
Outputs="$(_AppExtensionRoot)%(_ResolvedAppExtensionReferences.ContainerName)\%(_ResolvedAppExtensionReferences.FileName)%(_ResolvedAppExtensionReferences.Extension)"
|
||||||
|
>
|
||||||
|
<MakeDir
|
||||||
|
SessionId="$(BuildSessionId)"
|
||||||
|
Condition="'$(IsMacEnabled)' == 'true'"
|
||||||
|
Directories="$(_AppExtensionRoot)%(_ResolvedAppExtensionReferences.ContainerName)"
|
||||||
|
/>
|
||||||
|
|
||||||
|
<Ditto
|
||||||
|
SessionId="$(BuildSessionId)"
|
||||||
|
Condition="'$(IsMacEnabled)' == 'true'"
|
||||||
|
ToolExe="$(DittoExe)"
|
||||||
|
ToolPath="$(DittoPath)"
|
||||||
|
Source="@(_ResolvedAppExtensionReferences)"
|
||||||
|
Destination="$(_AppExtensionRoot)%(_ResolvedAppExtensionReferences.ContainerName)\%(_ResolvedAppExtensionReferences.FileName)%(_ResolvedAppExtensionReferences.Extension)"
|
||||||
|
/>
|
||||||
|
|
||||||
|
<!-- Delete any code signatures and dSYM dirs since they are now invalid -->
|
||||||
|
<RemoveDir
|
||||||
|
SessionId="$(BuildSessionId)"
|
||||||
|
Condition="'$(IsMacEnabled)' == 'true'"
|
||||||
|
Directories="$(_AppExtensionRoot)%(_ResolvedAppExtensionReferences.ContainerName)\%(_ResolvedAppExtensionReferences.FileName)%(_ResolvedAppExtensionReferences.Extension)\_CodeSignature;
|
||||||
|
$(_AppBundlePath)..\%(_ResolvedAppExtensionReferences.FileName)%(_ResolvedAppExtensionReferences.Extension).dSYM"
|
||||||
|
/>
|
||||||
|
</Target>
|
||||||
|
|
||||||
<Import Project="$(MSBuildThisFileDirectory)Xamarin.Shared.ObjCBinding.targets" Condition="'$(IsBindingProject)' == 'true'" />
|
<Import Project="$(MSBuildThisFileDirectory)Xamarin.Shared.ObjCBinding.targets" Condition="'$(IsBindingProject)' == 'true'" />
|
||||||
|
|
||||||
<!-- Xamarin.ImplicitFacade.targets will detect if we need to add an implicit reference to netstandard.dll -->
|
<!-- Xamarin.ImplicitFacade.targets will detect if we need to add an implicit reference to netstandard.dll -->
|
||||||
|
|
|
@ -954,82 +954,6 @@ Copyright (C) 2013-2016 Xamarin. All rights reserved.
|
||||||
</EmbedMobileProvision>
|
</EmbedMobileProvision>
|
||||||
</Target>
|
</Target>
|
||||||
|
|
||||||
<Target Name="_SeparateAppExtensionReferences" BeforeTargets="AssignProjectConfiguration">
|
|
||||||
<CreateItem Include="@(ProjectReference)" PreserveExistingMetadata="true" Condition="'%(Identity)' != '' And '%(ProjectReference.IsAppExtension)' == 'true'">
|
|
||||||
<Output ItemName="_AppExtensionReference" TaskParameter="Include" />
|
|
||||||
</CreateItem>
|
|
||||||
|
|
||||||
<ItemGroup>
|
|
||||||
<ProjectReference Remove="@(_AppExtensionReference)" />
|
|
||||||
</ItemGroup>
|
|
||||||
|
|
||||||
<!--<Warning Text="_SeparateAppExtensionReferences: @(_AppExtensionReference)"/>-->
|
|
||||||
</Target>
|
|
||||||
|
|
||||||
<Target Name="_AssignAppExtensionConfiguration" Condition="'@(_AppExtensionReference)' != ''">
|
|
||||||
<!-- assign configs if building a solution file -->
|
|
||||||
<AssignProjectConfiguration
|
|
||||||
ProjectReferences = "@(_AppExtensionReference)"
|
|
||||||
SolutionConfigurationContents = "$(CurrentSolutionConfigurationContents)"
|
|
||||||
Condition="'$(CurrentSolutionConfigurationContents)' != ''">
|
|
||||||
|
|
||||||
<Output TaskParameter="AssignedProjects" ItemName="_AppExtensionReferenceWithConfiguration"/>
|
|
||||||
</AssignProjectConfiguration>
|
|
||||||
|
|
||||||
<!-- Else, just -->
|
|
||||||
<CreateItem Include="@(_AppExtensionReference)"
|
|
||||||
Condition="'$(CurrentSolutionConfigurationContents)' == ''">
|
|
||||||
<Output TaskParameter="Include" ItemName="_AppExtensionReferenceWithConfiguration"/>
|
|
||||||
</CreateItem>
|
|
||||||
|
|
||||||
<!--<Warning Text="_AssignAppExtensionConfiguration: @(_AppExtensionReferenceWithConfiguration)"/>-->
|
|
||||||
</Target>
|
|
||||||
|
|
||||||
<!-- Split iOS App Extension projects into 2 lists
|
|
||||||
_AppExtensionReferenceWithConfigurationExistent: Projects existent on disk
|
|
||||||
_AppExtensionReferenceWithConfigurationNonExistent: Projects non-existent on disk -->
|
|
||||||
<Target Name="_SplitAppExtensionReferencesByExistent" DependsOnTargets="_AssignAppExtensionConfiguration">
|
|
||||||
<CreateItem Include="@(_AppExtensionReferenceWithConfiguration)" Condition="'@(_AppExtensionReferenceWithConfiguration)' != ''">
|
|
||||||
<Output TaskParameter="Include" ItemName="_AppExtensionReferenceWithConfigurationExistent"
|
|
||||||
Condition="Exists ('%(_AppExtensionReferenceWithConfiguration.Identity)')"/>
|
|
||||||
|
|
||||||
<Output TaskParameter="Include" ItemName="_AppExtensionReferenceWithConfigurationNonExistent"
|
|
||||||
Condition="!Exists ('%(_AppExtensionReferenceWithConfiguration.Identity)')"/>
|
|
||||||
</CreateItem>
|
|
||||||
|
|
||||||
<!--<Warning Text="_SplitAppExtensionReferencesByExistent: @(_AppExtensionReferenceWithConfigurationExistent)"/>-->
|
|
||||||
</Target>
|
|
||||||
|
|
||||||
<Target Name="_ResolveAppExtensionReferences" DependsOnTargets="_SplitAppExtensionReferencesByExistent">
|
|
||||||
<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="@(_AppExtensionReferenceWithConfigurationExistent)"
|
|
||||||
Targets="GetBundleTargetPath"
|
|
||||||
Properties="%(_AppExtensionReferenceWithConfigurationExistent.SetConfiguration); %(_AppExtensionReferenceWithConfigurationExistent.SetPlatform)"
|
|
||||||
Condition="'@(_AppExtensionReferenceWithConfigurationExistent)' != '' and '$(_BuildReferencedExtensionProjects)' != 'true'">
|
|
||||||
|
|
||||||
<Output TaskParameter="TargetOutputs" ItemName="_ResolvedAppExtensionReferences" Condition="'%(_AppExtensionReferenceWithConfigurationExistent.ReferenceOutputAssembly)' != 'false'"/>
|
|
||||||
</MSBuild>
|
|
||||||
|
|
||||||
<!-- Build the referenced project if required -->
|
|
||||||
<MSBuild
|
|
||||||
Projects="@(_AppExtensionReferenceWithConfigurationExistent)"
|
|
||||||
Properties="%(_AppExtensionReferenceWithConfigurationExistent.SetConfiguration); %(_AppExtensionReferenceWithConfigurationExistent.SetPlatform)"
|
|
||||||
Condition="'@(_AppExtensionReferenceWithConfigurationExistent)' != '' and '$(_BuildReferencedExtensionProjects)' == 'true' ">
|
|
||||||
|
|
||||||
<Output TaskParameter="TargetOutputs" ItemName="_ResolvedAppExtensionReferences" Condition="'%(_AppExtensionReferenceWithConfigurationExistent.ReferenceOutputAssembly)' != 'false'"/>
|
|
||||||
</MSBuild>
|
|
||||||
|
|
||||||
<Warning Text="Referenced iOS App Extension Project %(_AppExtensionReferenceWithConfigurationNonExistent.Identity) not found, ignoring."
|
|
||||||
Condition="'@(_AppExtensionReferenceWithConfigurationNonExistent)' != ''"/>
|
|
||||||
</Target>
|
|
||||||
|
|
||||||
<Target Name="_DetectDebugNetworkConfiguration">
|
<Target Name="_DetectDebugNetworkConfiguration">
|
||||||
<DetectDebugNetworkConfiguration
|
<DetectDebugNetworkConfiguration
|
||||||
SessionId="$(BuildSessionId)"
|
SessionId="$(BuildSessionId)"
|
||||||
|
@ -1043,25 +967,6 @@ Copyright (C) 2013-2016 Xamarin. All rights reserved.
|
||||||
</DetectDebugNetworkConfiguration>
|
</DetectDebugNetworkConfiguration>
|
||||||
</Target>
|
</Target>
|
||||||
|
|
||||||
<Target Name="_CopyAppExtensionsToBundle" DependsOnTargets="_ResolveAppExtensionReferences" Inputs="@(_ResolvedAppExtensionReferences)"
|
|
||||||
Outputs="$(_AppBundlePath)PlugIns\%(_ResolvedAppExtensionReferences.FileName)%(_ResolvedAppExtensionReferences.Extension)">
|
|
||||||
|
|
||||||
<MakeDir SessionId="$(BuildSessionId)" Condition="'$(IsMacEnabled)' == 'true' And '@(_ResolvedAppExtensionReferences)' != ''" Directories="$(_AppBundlePath)PlugIns" />
|
|
||||||
|
|
||||||
<Ditto
|
|
||||||
SessionId="$(BuildSessionId)"
|
|
||||||
Condition="'$(IsMacEnabled)' == 'true' And '@(_ResolvedAppExtensionReferences)' != '' And '%(_ResolvedAppExtensionReferences.Identity)' != ''"
|
|
||||||
ToolExe="$(DittoExe)"
|
|
||||||
ToolPath="$(DittoPath)"
|
|
||||||
Source="@(_ResolvedAppExtensionReferences)"
|
|
||||||
Destination="$(_AppBundlePath)PlugIns\%(_ResolvedAppExtensionReferences.FileName)%(_ResolvedAppExtensionReferences.Extension)"
|
|
||||||
/>
|
|
||||||
|
|
||||||
<!-- Delete any code signatures and dSYM dirs since they are now invalid -->
|
|
||||||
<RemoveDir SessionId="$(BuildSessionId)" Condition="'$(IsMacEnabled)' == 'true'" Directories="$(_AppBundlePath)PlugIns\%(_ResolvedAppExtensionReferences.FileName)%(_ResolvedAppExtensionReferences.Extension)\_CodeSignature;
|
|
||||||
$(_AppBundlePath)..\%(_ResolvedAppExtensionReferences.FileName)%(_ResolvedAppExtensionReferences.Extension).dSYM" />
|
|
||||||
</Target>
|
|
||||||
|
|
||||||
<Target Name="_ValidateAppBundle" Condition="'$(IsAppExtension)' == 'false' And '$(IsWatchApp)' == 'false'" DependsOnTargets="_DetectSdkLocations;_ComputeTargetFrameworkMoniker;_GenerateBundleName">
|
<Target Name="_ValidateAppBundle" Condition="'$(IsAppExtension)' == 'false' And '$(IsWatchApp)' == 'false'" DependsOnTargets="_DetectSdkLocations;_ComputeTargetFrameworkMoniker;_GenerateBundleName">
|
||||||
<ValidateAppBundleTask
|
<ValidateAppBundleTask
|
||||||
Condition="'$(IsMacEnabled)' == 'true'"
|
Condition="'$(IsMacEnabled)' == 'true'"
|
||||||
|
|
Загрузка…
Ссылка в новой задаче