diff options
author | Eric Mellino <erme@microsoft.com> | 2017-04-11 22:02:59 +0300 |
---|---|---|
committer | Eric Mellino <erme@microsoft.com> | 2017-04-11 23:21:37 +0300 |
commit | 6df998b048bf34496c4fcaa9f0c18d2cb9e79fad (patch) | |
tree | b9bb25fbdb453bab1c1ffc2e805f49fc12ae09bb /Tools-Override | |
parent | 9e033b8f9bbac005e0b63303d2e1cc904f606f08 (diff) |
Unchanged version of codeOptimization.targets.
Diffstat (limited to 'Tools-Override')
-rw-r--r-- | Tools-Override/OptimizationData.msbuild | 9 | ||||
-rw-r--r-- | Tools-Override/codeOptimization.targets | 79 |
2 files changed, 88 insertions, 0 deletions
diff --git a/Tools-Override/OptimizationData.msbuild b/Tools-Override/OptimizationData.msbuild new file mode 100644 index 0000000000..6b4e67b5b0 --- /dev/null +++ b/Tools-Override/OptimizationData.msbuild @@ -0,0 +1,9 @@ +<Project Sdk="Microsoft.NET.Sdk"> + <PropertyGroup> + <TargetFrameworks>netcoreapp1.0;net46</TargetFrameworks> + <DisableImplicitFrameworkReferences>true</DisableImplicitFrameworkReferences> + </PropertyGroup> + <ItemGroup> + <PackageReference Include="$(OptimizationDataPackageName)" Version="$(OptimizationDataVersion)" /> + </ItemGroup> +</Project>
\ No newline at end of file diff --git a/Tools-Override/codeOptimization.targets b/Tools-Override/codeOptimization.targets new file mode 100644 index 0000000000..d480cb221a --- /dev/null +++ b/Tools-Override/codeOptimization.targets @@ -0,0 +1,79 @@ +<?xml version="1.0" encoding="utf-8"?> +<Project ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> + <UsingTask TaskName="ZipFileExtractToDirectory" AssemblyFile="$(BuildToolsTaskDir)Microsoft.DotNet.Build.Tasks.dll"/> + + <PropertyGroup> + <OptimizationDataVersion Condition="'$(OptimizationDataVersion)'==''">2.0.0-rc-61101-16</OptimizationDataVersion> + <OptimizationDataPackageName Condition="'$(OptimizationDataPackageName)'==''">RoslynDependencies.OptimizationData</OptimizationDataPackageName> + <OptimizationDataDir Condition="'$(OptimizationDataDir)'==''">$(ToolsDir)OptimizationData/</OptimizationDataDir> + </PropertyGroup> + + <!-- We should only run this target on Windows and only if EnableProfileGuidedOptimization is set and we have training data --> + <Target Name="OptimizeWithTrainingData" + AfterTargets="AfterBuild" + BeforeTargets="CopyFilesToOutputDirectory" + DependsOnTargets="RestoreOptimizationDataPackage;ResolveOptionalTools" + Condition="'$(OS)'=='Windows_NT' and '$(EnableProfileGuidedOptimization)'=='true' and Exists('$(OptimizationDataDir)$(AssemblyName).pgo')"> + + <!-- Find IBCMerge as a resolved optional tool. --> + <PropertyGroup> + <IBCMergeToolPath Condition="'%(Filename)%(Extension)'=='ibcmerge.exe'">@(ResolvedOptionalToolReferences)</IBCMergeToolPath> + </PropertyGroup> + + <PropertyGroup> + <OptimizedAssemblyDir>$(IntermediateOutputPath)/OptimizedAssembly</OptimizedAssemblyDir> + <OptimizedAssemblyFile>$(OptimizedAssemblyDir)/$(AssemblyName).dll</OptimizedAssemblyFile> + </PropertyGroup> + + <!-- Copy the compiled assembly into a folder for further processing --> + <MakeDir Directories="$(OptimizedAssemblyDir)" /> + <Copy SourceFiles="@(IntermediateAssembly)" DestinationFolder="$(OptimizedAssemblyDir)" /> + + <!-- Apply optimization data to the compiled assembly --> + <Exec Command="$(IBCMergeToolPath) -q -f -partialNGEN -minify -mo $(OptimizedAssemblyFile) -incremental $(OptimizationDataDir)$(AssemblyName).pgo" /> + + <!-- Verify that the optimization data has been applied --> + <Exec Command="$(IBCMergeToolPath) -mi $(OptimizedAssemblyFile)" /> + + <!-- We need to make sure that the assembly that gets packaged is the one with the optimization data --> + <ItemGroup> + <IntermediateAssembly Remove="@(IntermediateAssembly)"/> + <IntermediateAssembly Include="$(OptimizedAssemblyDir)/$(AssemblyName).dll"/> + </ItemGroup> + </Target> + + <!-- We need the OptimizationData package in order to be able to optimize the assembly --> + <Target Name="RestoreOptimizationDataPackage" BeforeTargets="CoreCompile" + Condition="'$(EnableProfileGuidedOptimization)'=='true' and !Exists('$(OptimizationDataDir)project.json')"> + + <!-- Dynamically create a project.json file used to restore the optimization data--> + <Message Text="Generating project.json for optimization data" Importance="low" /> + <ItemGroup> + <_OptimizationDataJsonLine Include="{"dependencies": {" /> + <_OptimizationDataJsonLine Include=""$(OptimizationDataPackageName)" : "$(OptimizationDataVersion)" " /> + <_OptimizationDataJsonLine Include="},"frameworks": {"netcoreapp1.0": {},"net46": {}}}"/> + </ItemGroup> + + <PropertyGroup> + <OptimizationDataProjectJson>$(OptimizationDataDir)project.json</OptimizationDataProjectJson> + <OptimizationDataNuGetFeed Condition="'$(OptimizationDataNuGetFeed)'==''">https:%2F%2Fdotnet.myget.org/F/roslyn/api/v3/index.json</OptimizationDataNuGetFeed> + </PropertyGroup> + + <MakeDir Directories="$(OptimizationDataDir)" ContinueOnError="true" /> + <WriteLinesToFile File="$(OptimizationDataProjectJson)" Lines="@(_OptimizationDataJsonLine)" Overwrite="true" /> + + <!-- Restore the OptimizationData package --> + <Exec Command="$(DnuRestoreCommand) $(OptimizationDataProjectJson) --source $(OptimizationDataNuGetFeed)" + StandardOutputImportance="Low"/> + + <!-- Copy the restored files into a more accessible location --> + <ItemGroup> + <_OptimizationDataFiles Include="$(PackagesDir)/$(OptimizationDataPackageName)/$(OptimizationDataVersion)/content/OptimizationData/*.pgo" /> + </ItemGroup> + + <Copy SourceFiles="@(_OptimizationDataFiles)" + DestinationFiles="@(_OptimizationDataFiles->'$(OptimizationDataDir)%(Filename)%(Extension)')" + SkipUnchangedFiles="true" + ContinueOnError="true"/> + </Target> +</Project>
\ No newline at end of file |