|
<!--
***********************************************************************************************
Microsoft.Xaml.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.
Copyright (C) Microsoft Corporation. All rights reserved.
***********************************************************************************************
-->
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<LoadTimeSensitiveTargets>
$(LoadTimeSensitiveTargets);
XamlMarkupCompilePass1;
</LoadTimeSensitiveTargets>
<LoadTimeSensitiveProperties>
$(LoadTimeSensitiveProperties);
</LoadTimeSensitiveProperties>
<TaskVersion>4.0.0.0</TaskVersion>
<TaskKeyToken>31bf3856ad364e35</TaskKeyToken>
<XamlBuildTaskAssemblyName Condition="'$(XamlBuildTaskAssemblyName)'==''">XamlBuildTask, Version=$(TaskVersion), Culture=neutral, PublicKeyToken=$(TaskKeyToken)</XamlBuildTaskAssemblyName>
<XamlRequiresCompilationPass2 Condition="'$(XamlRequiresCompilationPass2)'==''">false</XamlRequiresCompilationPass2>
<XamlTemporaryAssemblyName Condition="'$(XamlTemporaryAssemblyName)'==''">$(AssemblyName)</XamlTemporaryAssemblyName>
<CompileTargetNameForTemporaryAssembly Condition="'$(CompileTargetNameForTemporaryAssembly)' == ''">CompileTemporaryAssembly</CompileTargetNameForTemporaryAssembly>
<!-- Microsoft.Xaml.targets needs to be included after Microsoft.Fx.targets and Microsoft.DevDiv.targets
to have a chance to add these tasks to the PrepareResources target's dependencies.
Unfortunately, Microsoft.DevDiv.targets completely overwrites the PrepareResourcesDependsOnProperty
(as a bug workaround-see comment there).
-->
<PrepareResourcesDependsOn>
XamlMarkupCompilePass1;
XamlMarkupCompilePass2;
$(PrepareResourcesDependsOn)
</PrepareResourcesDependsOn>
</PropertyGroup>
<PropertyGroup>
<XamlBuildTaskLocation Condition="'$(XamlBuildTaskPath)'==''">$(MSBuildBinPath)</XamlBuildTaskLocation>
<XamlBuildTaskLocation Condition="'$(XamlBuildTaskPath)'!=''">$(XamlBuildTaskPath)</XamlBuildTaskLocation>
</PropertyGroup>
<PropertyGroup>
<MSBuildAllProjects>$(MSBuildAllProjects);$(MSBuildToolsPath)\Microsoft.Xaml.targets</MSBuildAllProjects>
</PropertyGroup>
<PropertyGroup>
<XamlGenCodeFileNames Condition="'$(XamlGenCodeFileNames)'==''">$(MSBuildProjectFile).XamlGeneratedCodeFileListAbsolute.txt</XamlGenCodeFileNames>
<XamlGenMarkupFileNames Condition="'$(XamlGenMarkupFileNames)'==''">$(MSBuildProjectFile).XamlGeneratedXamlFileListAbsolute.txt</XamlGenMarkupFileNames>
<XamlPass2FlagFile Condition="'$(XamlPass2FlagFile)'==''">$(MSBuildProjectFile).XamlPass2Flag.txt</XamlPass2FlagFile>
</PropertyGroup>
<ItemGroup Condition="'$(BuildingInsideVisualStudio)'=='true'">
<AvailableItemName Include="XamlAppDef" />
</ItemGroup>
<UsingTask Condition="'$(XamlBuildTaskPath)'==''" TaskName="Microsoft.Build.Tasks.Xaml.PartialClassGenerationTask" AssemblyName="$(XamlBuildTaskAssemblyName)" />
<UsingTask Condition="'$(XamlBuildTaskPath)'!=''" TaskName="Microsoft.Build.Tasks.Xaml.PartialClassGenerationTask" AssemblyFile="$(XamlBuildTaskPath)\XamlBuildTask.dll" />
<UsingTask Condition="'$(XamlBuildTaskPath)'==''" TaskName="Microsoft.Build.Tasks.Xaml.GenerateTemporaryAssemblyTask" AssemblyName="$(XamlBuildTaskAssemblyName)" />
<UsingTask Condition="'$(XamlBuildTaskPath)'!=''" TaskName="Microsoft.Build.Tasks.Xaml.GenerateTemporaryAssemblyTask" AssemblyFile="$(XamlBuildTaskPath)\XamlBuildTask.dll" />
<UsingTask Condition="'$(XamlBuildTaskPath)'==''" TaskName="Microsoft.Build.Tasks.Xaml.CompilationPass2Task" AssemblyName="$(XamlBuildTaskAssemblyName)" />
<UsingTask Condition="'$(XamlBuildTaskPath)'!=''" TaskName="Microsoft.Build.Tasks.Xaml.CompilationPass2Task" AssemblyFile="$(XamlBuildTaskPath)\XamlBuildTask.dll" />
<!--
================================================================
DesignTimeXamlMarkupCompilation
================================================================
-->
<PropertyGroup>
<CoreCompileDependsOn Condition="'$(BuildingInsideVisualStudio)' == 'true'">
DesignTimeXamlMarkupCompilation;
$(CoreCompileDependsOn)
</CoreCompileDependsOn>
</PropertyGroup>
<PropertyGroup>
<DesignTimeIntermediateOutputPath Condition="'$(DesignTimeIntermediateOutputPath)' == ''">$(IntermediateOutputPath)InProcessTempFiles\</DesignTimeIntermediateOutputPath>
</PropertyGroup>
<Target Name="DesignTimeXamlMarkupCompilation">
<!-- Make sure the directory exists. -->
<MakeDir Directories="$(DesignTimeIntermediateOutputPath)" Condition="'@(XamlAppDef)' != ''"/>
<CallTarget Condition="'$(BuildingProject)' != 'true' and '@(XamlAppDef)' != ''"
Targets="InProcessXamlMarkupCompilePass1" />
</Target>
<!--
================================================================
InProcessXamlMarkupCompilePass1
================================================================
-->
<Target Name="InProcessXamlMarkupCompilePass1"
Condition="'@(XamlAppDef)' != '' and '$(BuildingProject)' != 'true'">
<PartialClassGenerationTask
BuildTaskPath="$(XamlBuildTaskLocation)"
OutputPath="$(DesignTimeIntermediateOutputPath)"
Language="$(Language)"
ApplicationMarkup="@(XamlAppDef)"
References="@(ReferencePath)"
RootNamespace="$(RootNamespace)"
SourceCodeFiles="@(Compile)"
AssemblyName="$(AssemblyName)"
IsInProcessXamlMarkupCompile="true"
MSBuildProjectDirectory="$(MSBuildProjectDirectory)"
XamlBuildTypeInspectionExtensionNames="@(XamlBuildTaskTypeInspectionExtensionName)"
XamlBuildTypeGenerationExtensionNames="@(XamlBuildTaskTypeGenerationExtensionName)">
<Output ItemName="XamlInProcessGeneratedCodeFiles" TaskParameter="GeneratedCodeFiles" />
<Output ItemName="XamlInProcessGeneratedResources" TaskParameter="GeneratedResources" />
<!-- This property is not required. However we need to populate it as the output of the task. -->
<Output PropertyName="XamlInProcessRequiresCompilationPass2" TaskParameter="RequiresCompilationPass2" />
</PartialClassGenerationTask>
<ItemGroup>
<Compile Include="@(XamlInProcessGeneratedCodeFiles)" />
</ItemGroup>
</Target>
<!--
================================================================
CleanInProcessXamlGeneratedFiles
================================================================
-->
<Target Name="CleanInProcessXamlGeneratedFiles"
Condition="'@(XamlAppDef)' != '' And '$(BuildingInsideVisualStudio)'!='true'"
AfterTargets="DesignTimeXamlMarkupCompilation">
<ItemGroup>
<FileWrites Include="$(DesignTimeIntermediateOutputPath)\*" />
</ItemGroup>
</Target>
<!--
================================================================
XamlMarkupCompileReadGeneratedFileList
================================================================
-->
<Target Name="XamlMarkupCompileReadGeneratedFileList"
Condition="'@(XamlPage)' != '' or '@(XamlAppDef)' != ''"
BeforeTargets="XamlMarkupCompilePass1">
<ReadLinesFromFile File="$(IntermediateOutputPath)$(XamlGenCodeFileNames)">
<Output TaskParameter="Lines" ItemName="XamlOutputCodeFilesList"/>
</ReadLinesFromFile>
<ReadLinesFromFile File="$(IntermediateOutputPath)$(XamlGenMarkupFileNames)">
<Output TaskParameter="Lines" ItemName="XamlOutputMarkupFilesList"/>
</ReadLinesFromFile>
</Target>
<!--
================================================================
XamlMarkupCompilePass1
================================================================
-->
<Target Name="XamlMarkupCompilePass1"
Condition="'@(XamlPage)' != '' or '@(XamlAppDef)' != ''"
Inputs="@(XamlAppDef);@(Compile);$(MSBuildAllProjects);@(ReferencePath)"
Outputs="@(XamlOutputMarkupFilesList);
@(XamlOutputCodeFilesList);
$(IntermediateOutputPath)$(XamlGenCodeFileNames);
$(IntermediateOutputPath)$(XamlGenMarkupFileNames);
$(IntermediateOutputPath)$(XamlPass2FlagFile);">
<Message Text="(in) XamlPage: '@(XamlPage)'" Condition="'$(MSBuildTargetsVerbose)'=='true'"/>
<Message Text="(in) XamlAppDef: '@(XamlAppDef)'" Condition="'$(MSBuildTargetsVerbose)'=='true'"/>
<Message Text="(in) SourceCodeFiles: '@(Compile)'" Condition="'$(MSBuildTargetsVerbose)'=='true'"/>
<ItemGroup>
<XamlGeneratedResources Remove="@(XamlGeneratedResources)" />
<XamlGeneratedCodeFiles Remove="@(XamlGeneratedCodeFiles)" />
</ItemGroup>
<PartialClassGenerationTask
BuildTaskPath="$(XamlBuildTaskLocation)"
OutputPath="$(IntermediateOutputPath)"
Language="$(Language)"
ApplicationMarkup="@(XamlAppDef)"
References="@(ReferencePath)"
RootNamespace="$(RootNamespace)"
SourceCodeFiles="@(Compile)"
AssemblyName="$(AssemblyName)"
IsInProcessXamlMarkupCompile="false"
MSBuildProjectDirectory="$(MSBuildProjectDirectory)"
XamlBuildTypeGenerationExtensionNames="@(XamlBuildTaskTypeGenerationExtensionName)"
XamlBuildTypeInspectionExtensionNames="@(XamlBuildTaskTypeInspectionExtensionName)">
<Output ItemName="XamlGeneratedCodeFiles" TaskParameter="GeneratedCodeFiles" />
<Output ItemName="XamlGeneratedResources" TaskParameter="GeneratedResources" />
<Output ItemName="XamlFileNames" TaskParameter="ApplicationMarkup" />
<Output PropertyName="XamlRequiresCompilationPass2" TaskParameter="RequiresCompilationPass2" />
</PartialClassGenerationTask>
<WriteLinesToFile
File="$(IntermediateOutputPath)$(XamlGenCodeFileNames)"
Lines="@(XamlGeneratedCodeFiles)"
Overwrite="true"/>
<WriteLinesToFile
File="$(IntermediateOutputPath)$(XamlGenMarkupFileNames)"
Lines="@(XamlGeneratedResources)"
Overwrite="true"/>
<WriteLinesToFile
File="$(IntermediateOutputPath)$(XamlPass2FlagFile)"
Lines="@(XamlRequiresCompilationPass2)"
Overwrite="true"/>
<Message Text="(out) XamlGeneratedCodeFiles: '@(XamlGeneratedCodeFiles)'" Condition="'$(MSBuildTargetsVerbose)'=='true'"/>
<Message Text="(out) XamlGeneratedResources: '@(XamlGeneratedResources)'" Condition="'$(MSBuildTargetsVerbose)'=='true'"/>
<Message Text="(out) XamlRequiresCompilationPass2 : '$(XamlRequiresCompilationPass2)'" Condition="'$(MSBuildTargetsVerbose)'=='true'"/>
</Target>
<!--
================================================================
XamlMarkupCompileAddFilesGenerated
================================================================
-->
<Target Name="XamlMarkupCompileAddFilesGenerated"
Condition="'@(XamlPage)' != '' or '@(XamlAppDef)' != ''"
AfterTargets="XamlMarkupCompilePass1">
<ItemGroup>
<XamlGeneratedCodeFiles Condition="'@(XamlGeneratedCodeFiles)' == ''"
Include="@(XamlOutputCodeFilesList)" />
</ItemGroup>
<ItemGroup>
<XamlGeneratedResources Condition="'@(XamlGeneratedResources)' == ''"
Include="@(XamlOutputMarkupFilesList)" />
</ItemGroup>
<ItemGroup>
<FileWrites Include="@(XamlGeneratedResources);
@(XamlGeneratedCodeFiles);
$(IntermediateOutputPath)$(XamlGenCodeFileNames);
$(IntermediateOutputPath)$(XamlGenMarkupFileNames)" />
</ItemGroup>
<ItemGroup>
<Compile Include="@(XamlGeneratedCodeFiles)" />
</ItemGroup>
<ItemGroup>
<EmbeddedResource Include="@(XamlGeneratedResources)">
<GenerateResource>false</GenerateResource>
<Type>Non-Resx</Type>
<WithCulture>false</WithCulture>
</EmbeddedResource>
</ItemGroup>
</Target>
<!--
================================================================
XamlMarkupCompileReadPass2Flag
================================================================
-->
<Target Name="XamlMarkupCompileReadPass2Flag"
Condition="'@(XamlPage)' != '' or '@(XamlAppDef)' != ''"
BeforeTargets="XamlMarkupCompilePass2;XamlTemporaryAssemblyGeneration">
<ReadLinesFromFile File="$(IntermediateOutputPath)$(XamlPass2FlagFile)">
<Output TaskParameter="Lines" ItemName="XamlRequiresCompilationPass2"/>
</ReadLinesFromFile>
</Target>
<!--
================================================================
XamlTemporaryAssemblyGeneration
================================================================
-->
<Target Name="XamlTemporaryAssemblyGeneration"
Condition="'$(XamlRequiresCompilationPass2)' == 'true' "
Inputs="@(XamlAppDef);@(Compile);$(MSBuildAllProjects);@(XamlGeneratedCodeFiles);@(ReferencePath)"
Outputs="$(IntermediateOutputPath)$(XamlTemporaryAssemblyName).dll;
$(IntermediateOutputPath)$(XamlTemporaryAssemblyName).pdb"
DependsOnTargets="XamlMarkupCompilePass1;MarkupCompilePass1">
<Message Text="(in) MSBuildProjectFile: '$(MSBuildProjectFile)'" Condition="'$(MSBuildTargetsVerbose)' == 'true'" />
<Message Text="(in) CompileTargetName: '$(CompileTargetName)'" Condition="'$(MSBuildTargetsVerbose)'=='true'"/>
<Message Text="(in) SourceCodeFiles: '@(XamlGeneratedCodeFiles)'" Condition="'$(MSBuildTargetsVerbose)'=='true'"/>
<GenerateTemporaryAssemblyTask
OutputPath="$(IntermediateOutputPath)"
CurrentProject="$(MSBuildProjectFullPath)"
SourceCodeFiles="@(XamlGeneratedCodeFiles);@(_GeneratedCodeFiles)"
AssemblyName="$(XamlTemporaryAssemblyName)"
ApplicationMarkupTypeName="XamlAppDef"
CompileTargetName="$(CompileTargetNameForTemporaryAssembly)"
ReferencePaths="@(ReferencePath)"
GeneratedResourcesFiles="@(XamlGeneratedResources)">
</GenerateTemporaryAssemblyTask>
<PropertyGroup>
<_XamlTemporaryAssemblyPath_>$(IntermediateOutputPath)$(XamlTemporaryAssemblyName).dll</_XamlTemporaryAssemblyPath_>
<NonExistentFile>__NonExistentSubDir__\__NonExistentFile__</NonExistentFile>
</PropertyGroup>
<ItemGroup>
<FileWrites Include="$(IntermediateOutputPath)$(XamlTemporaryAssemblyName).*" />
</ItemGroup>
</Target>
<Target Name="CompileTemporaryAssembly" DependsOnTargets="BuildOnlySettings;ResolveKeySource;_GenerateCompileInputs;CoreCompile" />
<!--
================================================================
XamlMarkupCompilePass2
================================================================
-->
<Target Name="XamlMarkupCompilePass2"
Condition="'$(XamlRequiresCompilationPass2)' == 'true' "
Outputs="@(ExtensionGeneratedCodeFiles)"
DependsOnTargets="XamlTemporaryAssemblyGeneration">
<Message Text="(in) XamlPage: '@(XamlPage)'" Condition="'$(MSBuildTargetsVerbose)'=='true'"/>
<Message Text="(in) XamlAppDef: '@(XamlAppDef)'" Condition="'$(MSBuildTargetsVerbose)'=='true'"/>
<Message Text="(in) References: '@(ReferencePath);$(_XamlTemporaryAssemblyPath_)'" Condition="'$(MSBuildTargetsVerbose)'=='true'"/>
<CompilationPass2Task
BuildTaskPath="$(XamlBuildTaskLocation)"
ApplicationMarkup="@(XamlAppDef)"
References="@(ReferencePath)"
LocalAssemblyReference="$(_XamlTemporaryAssemblyPath_)"
AssemblyName="$(AssemblyName)"
RootNamespace="$(RootNamespace)"
OutputPath="$(IntermediateOutputPath)"
Language="$(Language)"
SourceCodeFiles="@(Compile)"
IsInProcessXamlMarkupCompile="false"
MSBuildProjectDirectory="$(MSBuildProjectDirectory)"
MSBuildArchitecture="$(PlatformTargetAsMSBuildArchitecture)"
XamlBuildTypeInspectionExtensionNames="@(XamlBuildTaskTypeInspectionExtensionName)"
ApplicationMarkupWithTypeName="@(XamlFileNames)">
<Output ItemName="ExtensionGeneratedCodeFiles" TaskParameter="ExtensionGeneratedCodeFiles" />
</CompilationPass2Task>
<WriteLinesToFile
File="$(IntermediateOutputPath)$(XamlPass2FlagFile)"
Lines="false"
Overwrite="true"/>
<Message Text="(out) ExtensionGeneratedCodeFiles: '@(ExtensionGeneratedCodeFiles)'" />
<!-- Add extension files to the list of generated files so that they can be monitored and cleaned up -->
<WriteLinesToFile
File="$(IntermediateOutputPath)$(XamlGenCodeFileNames)"
Lines="@(ExtensionGeneratedCodeFiles)"
Overwrite="false"/>
</Target>
<!--
================================================================
XamlMarkupCompileAddFilesGenerated
================================================================
-->
<Target Name="XamlMarkupCompileAddExtensionFilesGenerated"
Condition="'@(XamlPage)' != '' or '@(XamlAppDef)' != ''"
AfterTargets="XamlMarkupCompilePass2">
<ItemGroup>
<FileWrites Include="@(ExtensionGeneratedCodeFiles)" />
</ItemGroup>
<ItemGroup>
<Compile Include="@(ExtensionGeneratedCodeFiles)" />
</ItemGroup>
</Target>
<!--
================================================================
GetCopyToOutputDirectoryXamlAppDefs
Get all XamlAppDefs that may need to be transferred to the output directory.
Compare GetCopyToOutputDirectoryItems in Microsoft.Common.targets
================================================================
-->
<Target Name="GetCopyToOutputDirectoryXamlAppDefs" BeforeTargets="GetCopyToOutputDirectoryItems">
<ItemGroup>
<_XamlAppDefItemsToCopy Include="@(XamlAppDef->'%(FullPath)')" Condition="'%(XamlAppDef.CopyToOutputDirectory)'=='Always' or '%(XamlAppDef.CopyToOutputDirectory)'=='PreserveNewest'"/>
</ItemGroup>
<AssignTargetPath Files="@(_XamlAppDefItemsToCopy)" RootFolder="$(MSBuildProjectDirectory)">
<Output TaskParameter="AssignedFiles" ItemName="_XamlAppDefItemsToCopyWithTargetPath" />
</AssignTargetPath>
<!-- The _SourceItems properties are internal to Microsoft.Common.targets,
but necessary to use here because there is no public equivalent -->
<ItemGroup>
<AllItemsFullPathWithTargetPath Include="@(_XamlAppDefItemsToCopyWithTargetPath)"/>
<_SourceItemsToCopyToOutputDirectoryAlways Include="@(_XamlAppDefItemsToCopyWithTargetPath)" Condition="'%(_XamlAppDefItemsToCopyWithTargetPath.CopyToOutputDirectory)'=='Always'"/>
<_SourceItemsToCopyToOutputDirectory Include="@(_XamlAppDefItemsToCopyWithTargetPath)" Condition="'%(_XamlAppDefItemsToCopyWithTargetPath.CopyToOutputDirectory)'=='PreserveNewest'"/>
</ItemGroup>
</Target>
</Project>
|