123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152 |
- <Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <PropertyGroup>
- <EnableDefaultEntityDeployItems Condition="'$(EnableDefaultEntityDeployItems)' == ''">True</EnableDefaultEntityDeployItems>
- </PropertyGroup>
- <!-- This .targets file can be used by updating Microsoft.Common.targets to
- include the line below (as the last import element just before the end project tag)
- <Import Project="$(MSBuildBinPath)\Microsoft.Data.Entity.targets" Condition="Exists('$(MSBuildBinPath)\Microsoft.Data.Entity.targets')"/>
- -->
- <!-- The below ensures that "EntityDeploy" is available in the VS Build Action dropdown -->
- <ItemGroup>
- <AvailableItemName Include="EntityDeploy" />
- </ItemGroup>
- <PropertyGroup>
- <!-- EntityDeployIntermediateResourcePath is the path used to store resources generated from
- the EDMX file before they are embedded in the build target -->
- <EntityDeployIntermediateResourcePath>$(IntermediateOutputPath)edmxResourcesToEmbed\</EntityDeployIntermediateResourcePath>
- </PropertyGroup>
- <UsingTask TaskName="EntityDeploySplit"
- AssemblyFile="Microsoft.Data.Entity.Build.Tasks.dll" />
- <UsingTask TaskName="EntityDeploy"
- AssemblyFile="Microsoft.Data.Entity.Build.Tasks.dll" />
- <UsingTask TaskName="EntityDeploySetLogicalNames"
- AssemblyFile="Microsoft.Data.Entity.Build.Tasks.dll" />
- <UsingTask TaskName="EntityClean"
- AssemblyFile="Microsoft.Data.Entity.Build.Tasks.dll" />
- <PropertyGroup>
- <!-- EntityDeployDependsOn deliberately left empty so others can override this -->
- <EntityDeployDependsOn></EntityDeployDependsOn>
- <BuildDependsOn>
- EntityDeploy;
- $(BuildDependsOn)
- </BuildDependsOn>
- </PropertyGroup>
- <PropertyGroup>
- <CleanDependsOn>
- $(CleanDependsOn);
- EntityClean;
- </CleanDependsOn>
- </PropertyGroup>
- <Target Name="EntityDeploy"
- DependsOnTargets="$(EntityDeployDependsOn)"
- Condition="'@(EntityDeploy)' != ''">
- <CallTarget Targets="EntityDeployNonEmbeddedResources" />
- <CallTarget Targets="EntityDeployEmbeddedResources" />
- <CallTarget Targets="EntityDeploySetLogicalNames" />
- </Target>
- <!-- Split the EDMX files into two groups: those whose resources need to be embedded
- and those whose resources need to be copied
- Note: this also assigns the EntityDeployRelativeDir metadata to each
- item so that the same metadata can be used regardless of whether the
- underlying item is a link or a normal file -->
- <Target Name="EntityDeploySplit" >
- <EntityDeploySplit
- Sources="@(EntityDeploy)" >
- <Output TaskParameter="EmbeddingItems" ItemName="EntityDeployEmbeddingItems" />
- <Output TaskParameter="NonEmbeddingItems" ItemName="EntityDeployCopyingItems" />
- </EntityDeploySplit>
- <Message Condition="'$(EntityDeployDebug)'=='true'"
- Text="EntityDeploySplit: EntityDeployEmbeddingItems = @(EntityDeployEmbeddingItems)" />
- <Message Condition="'$(EntityDeployDebug)'=='true'"
- Text="EntityDeploySplit: EntityDeployCopyingItems = @(EntityDeployCopyingItems)" />
- </Target>
- <!-- Generate to $(OutputPath) the CSDL, MSL and SSDL resources from the EDMX
- files set to copy their outputs to the output directory (use SSDL as marker
- file as that is the last one generated) -->
- <Target Name="EntityDeployNonEmbeddedResources"
- DependsOnTargets="EntityDeploySplit"
- Inputs="@(EntityDeployCopyingItems)"
- Outputs="@(EntityDeployCopyingItems->'$(OutputPath)%(EntityDeployRelativeDir)%(Filename).ssdl')" >
- <EntityDeploy
- Sources="@(EntityDeployCopyingItems)"
- OutputPath="$(OutputPath)" >
- </EntityDeploy>
- </Target>
- <!-- Generates to $(EntityDeployIntermediateResourcePath) the CSDL, MSL and SSDL
- resources from the EDMX files set to embed their outputs (use SSDL as marker
- file as that is the last one generated) -->
- <Target Name="EntityDeployEmbeddedResources"
- DependsOnTargets="EntityDeploySplit"
- Inputs="@(EntityDeployEmbeddingItems)"
- Outputs="@(EntityDeployEmbeddingItems->'$(EntityDeployIntermediateResourcePath)%(EntityDeployRelativeDir)%(Filename).ssdl')" >
- <EntityDeploy
- Sources="@(EntityDeployEmbeddingItems)"
- OutputPath="$(EntityDeployIntermediateResourcePath)" >
- </EntityDeploy>
- </Target>
- <Target Name="EntityClean"
- Condition="'@(EntityDeploy)' != ''">
- <EntityClean
- Sources="@(EntityDeploy)"
- ResourceOutputPath="$(EntityDeployIntermediateResourcePath)"
- OutputPath="$(OutputPath)"
- />
- </Target>
- <!-- Define the CSDL/MSL/SSDL files generated from @(EntityDeployEmbeddingItems)
- as part of the EmbeddedResource ItemGroup which includes them in the build target
- Note: this must happen regardless of whether the EntityDeployEmbeddedResources target is
- skipped due to incremental build -->
- <Target Name="EntityDeploySetLogicalNames"
- DependsOnTargets="EntityDeploySplit">
- <!-- First define the resources to be embedded
- Note: ignore resources which are not in @(EntityDeployEmbeddingItems) - this ignores
- resources generated by previous runs which have now had their MetadataArtifactProcessing
- changed to "CopyToOutput" -->
- <ItemGroup>
- <EntityDeployResourcesToEmbed Include="@(EntityDeployEmbeddingItems->'$(EntityDeployIntermediateResourcePath)%(EntityDeployRelativeDir)%(Filename).csdl')" />
- <EntityDeployResourcesToEmbed Include="@(EntityDeployEmbeddingItems->'$(EntityDeployIntermediateResourcePath)%(EntityDeployRelativeDir)%(Filename).msl')" />
- <EntityDeployResourcesToEmbed Include="@(EntityDeployEmbeddingItems->'$(EntityDeployIntermediateResourcePath)%(EntityDeployRelativeDir)%(Filename).ssdl')" />
- </ItemGroup>
- <Message Condition="'$(EntityDeployDebug)'=='true'"
- Text="EntityDeploySetLogicalNames: EntityDeployResourcesToEmbed = @(EntityDeployResourcesToEmbed)" />
- <!-- Now update their logical names and add them to the list of resources to be embedded -->
- <EntityDeploySetLogicalNames
- Sources="@(EntityDeployResourcesToEmbed)"
- ResourceOutputPath="$(EntityDeployIntermediateResourcePath)" >
- <Output TaskParameter="ResourcesToEmbed" ItemName="EmbeddedResource"/>
- </EntityDeploySetLogicalNames>
- </Target>
- </Project>
|