diff options
Diffstat (limited to '.packages/microsoft.dotnet.buildtools/3.0.0-preview4-04022-01/lib/BinPlace.targets')
-rwxr-xr-x | .packages/microsoft.dotnet.buildtools/3.0.0-preview4-04022-01/lib/BinPlace.targets | 205 |
1 files changed, 205 insertions, 0 deletions
diff --git a/.packages/microsoft.dotnet.buildtools/3.0.0-preview4-04022-01/lib/BinPlace.targets b/.packages/microsoft.dotnet.buildtools/3.0.0-preview4-04022-01/lib/BinPlace.targets new file mode 100755 index 0000000000..f93f0ff687 --- /dev/null +++ b/.packages/microsoft.dotnet.buildtools/3.0.0-preview4-04022-01/lib/BinPlace.targets @@ -0,0 +1,205 @@ +<?xml version="1.0" encoding="utf-8"?> +<Project ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> + <!-- Binplacing targets and properties --> + <PropertyGroup> + <BinPlaceUseHardlinksIfPossible Condition="'$(BinPlaceUseHardlinksIfPossible)' == ''">true</BinPlaceUseHardlinksIfPossible> + <EnableBinPlacing Condition="'$(EnableBinPlacing)' == '' AND ('$(BinPlaceRef)' == 'true' OR '$(BinPlaceRuntime)' == 'true' OR '$(BinPlaceTest)' == 'true')">true</EnableBinPlacing> + </PropertyGroup> + + <Target Name="BinPlace" + DependsOnTargets="GetBinPlaceConfiguration;BinPlaceFiles;BinPlaceProps" + AfterTargets="CopyFilesToOutputDirectory" + Condition="'$(EnableBinPlacing)' == 'true'" /> + + <Target Name="BinPlaceFiles" + Condition="'@(BinPlaceDir)' != ''" + DependsOnTargets="GetBinPlaceItems" + Inputs="@(BinPlaceDir);%(BinPlaceDir.ItemName);%(BinPlaceDir.Identity)" + Outputs="unused" > + + <PropertyGroup> + <_BinPlaceItemName>%(BinPlaceDir.ItemName)</_BinPlaceItemName> + <_BinPlaceItemName Condition="'$(_BinPlaceItemName)' == ''">BinPlaceItem</_BinPlaceItemName> + <_BinPlaceDir>%(BinPlaceDir.Identity)</_BinPlaceDir> + </PropertyGroup> + + <ItemGroup> + <!-- Temporary collection to allow dynamic include name. --> + <_BinPlaceItems Include="@($(_BinPlaceItemName))" /> + <BinPlaceItemsWithFullTargetPath Include="@(_BinPlaceItems)"> + <TargetPath Condition="'%(_BinPlaceItems.TargetPath)' != ''">%(_BinPlaceItems.TargetPath)</TargetPath> + <TargetPath Condition="'%(_BinPlaceItems.TargetPath)' == ''">%(Filename)%(Extension)</TargetPath> + </BinPlaceItemsWithFullTargetPath> + </ItemGroup> + + <Message Importance="low" Text="BinPlaceDir: $(_BinPlaceDir)" /> + + <Copy SourceFiles="@(BinPlaceItemsWithFullTargetPath)" + DestinationFiles="@(BinPlaceItemsWithFullTargetPath -> '$([MSBuild]::EnsureTrailingSlash('$(_BinPlaceDir)'))%(TargetPath)')" + SkipUnchangedFiles="true" + OverwriteReadOnlyFiles="true" + Retries="$(CopyRetryCount)" + RetryDelayMilliseconds="$(CopyRetryDelayMilliseconds)" + UseHardlinksIfPossible="$(BinPlaceUseHardlinksIfPossible)"> + <Output TaskParameter="DestinationFiles" ItemName="FileWrites" /> + </Copy> + </Target> + + <UsingTask TaskName="SaveItems" AssemblyFile="$(BuildToolsTaskDir)Microsoft.DotNet.Build.Tasks.dll"/> + <Target Name="BinPlaceProps" + Condition="'@(PackageFileDir)' != ''" + DependsOnTargets="GetBinPlaceItems" + Inputs="%(PackageFileDir.Identity);%(PackageFileDir.ItemName)" + Outputs="unused" > + <ItemGroup> + <!-- in the case of an overlapping batch (eg: multiple configurations using same directory) + use the first --> + <_packageFileDir Include="@(PackageFileDir->Distinct())" /> + </ItemGroup> + + <PropertyGroup> + <_propsFilename>$(TargetName).$(TargetGroup)-$(OSGroup)</_propsFilename> + <_propsFilename Condition="'$(TargetName)' == ''">$(MSBuildProjectName).$(TargetGroup)-$(OSGroup)</_propsFilename> + <_projectDirLength>$(ProjectDir.Length)</_projectDirLength> + </PropertyGroup> + + <PropertyGroup> + <_BinPlaceItemName>%(_packageFileDir.ItemName)</_BinPlaceItemName> + <_BinPlaceItemName Condition="'$(_BinPlaceItemName)' == ''">BinPlaceItem</_BinPlaceItemName> + </PropertyGroup> + + <ItemGroup> + <_itemsToSave Include="@($(_BinPlaceItemName))"> + <!-- intentionally empty: to be set by pkgproj --> + <TargetPath></TargetPath> + <TargetFramework>%(_packageFileDir.BuildConfiguration_NuGetTargetMonikerShort)</TargetFramework> + </_itemsToSave> + + <!-- Include doc files. --> + <_docFiles Condition="'$(BinPlaceRef)' == 'true'" Include="$(XmlDocDir)/**/$(TargetName).xml" /> + <_docFiles> + <SubFolder Condition="'%(RecursiveDir)' != ''">/$([System.String]::new('%(RecursiveDir)').TrimEnd('\').TrimEnd('/'))</SubFolder> + </_docFiles> + <_docFiles> + <TargetFramework>%(_packageFileDir.BuildConfiguration_NuGetTargetMonikerShort)</TargetFramework> + </_docFiles> + <_itemsToSave Include="@(_docFiles)"/> + + </ItemGroup> + + <Message Importance="low" Text="PackageFileDir: @(PackageFileDir)" /> + + <SaveItems ItemName="%(_packageFileDir.SaveItemName)" + Items="@(_itemsToSave)" + Files="%(_packageFileDir.Identity)\$(_propsFilename).props"> + <Output TaskParameter="Files" ItemName="FileWrites" /> + </SaveItems> + </Target> + + <Target Name="GetBinPlaceItems" DependsOnTargets="GetCopyToOutputDirectoryItems"> + <ItemGroup> + <BinPlaceItem Condition="Exists('$(TargetPath)')" Include="$(TargetPath)" /> + <BinPlaceItem Condition="Exists('$(TargetDir)$(TargetName).pdb')" Include="$(TargetDir)$(TargetName).pdb" /> + <BinPlaceItem Condition="'$(BinPlaceReferenceCopyLocalPaths)' != 'false'" Include="@(ReferenceCopyLocalPaths)" /> + <BinPlaceItem Condition="'$(BinPlaceCopyToOutputDirectoryItems)' != 'false'" Include="@(AllItemsFullPathWithTargetPath)" /> + </ItemGroup> + </Target> + + <UsingTask TaskName="FindBestConfigurations" AssemblyFile="$(BuildToolsTaskDir)Microsoft.DotNet.Build.Tasks.dll"/> + <Target Name="GetBinPlaceConfiguration" DependsOnTargets="GetBuildConfigurations"> + <!-- find which, if any, build configuration of this project is best + for each binplace configuration --> + <FindBestConfigurations Properties="@(Property)" + PropertyValues="@(PropertyValue)" + SupportedConfigurations="$(_AllBuildConfigurations)" + Configurations="@(BinPlaceConfiguration)"> + <Output TaskParameter="BestConfigurations" ItemName="_bestBinlaceConfigurations" /> + </FindBestConfigurations> + + <ItemGroup> + <_currentBinPlaceConfigurations Include="@(_bestBinlaceConfigurations)" Condition="'%(Identity)' == '$(Configuration)' OR '%(Identity)-$(ConfigurationGroup)' == '$(Configuration)'" /> + + <BinPlaceDir Condition="'$(BinPlaceTest)' == 'true'" Include="@(_currentBinPlaceConfigurations->'%(TestPath)')" /> + <BinPlaceDir Condition="'$(BinPlaceRuntime)' == 'true'" Include="@(_currentBinPlaceConfigurations->'%(RuntimePath)')" /> + <BinPlaceDir Condition="'$(BinPlaceRef)' == 'true'" Include="@(_currentBinPlaceConfigurations->'%(RefPath)')" /> + + <PackageFileDir Condition="'$(BinPlaceRuntime)' == 'true'" Include="@(_currentBinPlaceConfigurations->'%(PackageFileRuntimePath)')"> + <SaveItemName Condition="'%(_currentBinPlaceConfigurations.SaveItemName)' == ''">LibFile</SaveItemName> + </PackageFileDir> + <PackageFileDir Condition="'$(BinPlaceRef)' == 'true'" Include="@(_currentBinPlaceConfigurations->'%(PackageFileRefPath)')"> + <SaveItemName Condition="'%(_currentBinPlaceConfigurations.SaveItemName)' == ''">RefFile</SaveItemName> + </PackageFileDir> + + <!-- permit BinplaceConfigurations to define SetProperties metadata, + set those properties when BinplaceConfiguration is active --> + <_binplacePropertyTuples Include="%(_currentBinPlaceConfigurations.SetProperties)" /> + + <_binplaceSetProperty Condition="'%(_binplacePropertyTuples.Identity)' != ''" + Include="$([System.String]::new('%(_binplacePropertyTuples.Identity)').Split('=')[0])"> + <Value>$([System.String]::new('%(_binplacePropertyTuples.Identity)').Split('=')[1])</Value> + </_binplaceSetProperty> + </ItemGroup> + + <CreateProperty Value="%(_binplaceSetProperty.Value)" Condition="'@(_binplaceSetProperty)' != ''" > + <Output TaskParameter="Value" PropertyName="%(_binplaceSetProperty.Identity)" /> + </CreateProperty> + </Target> + + <!-- IncrementalClean and CoreClean only clean paths under Intermediate or OutDir, handle additional paths --> + <ItemGroup> + <AdditionalCleanDirectories Include="@(BinPlaceConfiguration->'%(RefPath)')" /> + <AdditionalCleanDirectories Include="@(BinPlaceConfiguration->'%(RuntimePath)')" /> + <AdditionalCleanDirectories Include="@(BinPlaceConfiguration->'%(PackageFileRefPath)')" /> + <AdditionalCleanDirectories Include="@(BinPlaceConfiguration->'%(PackageFileRuntimePath)')" /> + <AdditionalCleanDirectories Include="@(BinPlaceConfiguration->'%(TestPath)')" /> + </ItemGroup> + + <Target Name="_CleanGetCurrentAdditionalFileWrites" BeforeTargets="_CleanGetCurrentAndPriorFileWrites" Condition="'@(AdditionalCleanDirectories)' != ''"> + <!-- find files under paths we care about and add them to _CleanCurrentFileWrites to ensure they are written to the file list --> + <FindUnderPath Path="%(AdditionalCleanDirectories.Identity)" Files="@(FileWrites)" UpdateToAbsolutePaths="true"> + <Output TaskParameter="InPath" ItemName="_CleanCurrentFileWrites" /> + </FindUnderPath> + </Target> + + <!-- delete files under our AdditionalCleanDirectories on Incremental clean --> + <Target Name="IncrementalCleanAdditionalDirectories" BeforeTargets="IncrementalClean" Condition="'@(AdditionalCleanDirectories)' != ''"> + <ItemGroup> + <_CleanOrphanAdditionalFileWrites Include="@(_CleanPriorFileWrites)" Exclude="@(_CleanCurrentFileWrites)" /> + </ItemGroup> + <FindUnderPath Path="%(AdditionalCleanDirectories.Identity)" Files="@(_CleanOrphanAdditionalFileWrites)"> + <Output TaskParameter="InPath" ItemName="_CleanOrphanFileWritesInAdditionalDirectories" /> + </FindUnderPath> + + <!-- Delete the orphaned files. IncrementalClean will remove these from the file list --> + <Delete Files="@(_CleanOrphanFileWritesInAdditionalDirectories)" TreatErrorsAsWarnings="true"> + <Output TaskParameter="DeletedFiles" ItemName="_CleanOrphanFilesDeleted" /> + </Delete> + </Target> + + <!-- delete files under our AdditionalCleanDirectories on CoreClean --> + <Target Name="CleanAdditionalDirectories" AfterTargets="CoreClean" Condition="'@(AdditionalCleanDirectories)' != ''"> + <FindUnderPath Path="%(AdditionalCleanDirectories.Identity)" Files="@(_CleanUniqueRemainingFileWrites)"> + <Output TaskParameter="InPath" ItemName="_CleanUniqueRemainingFileWritesInAdditionalDirectories"/> + </FindUnderPath> + + <Delete Files="@(_CleanUniqueRemainingFileWritesInAdditionalDirectories)" TreatErrorsAsWarnings="true"> + <Output TaskParameter="DeletedFiles" ItemName="_CleanUniqueRemainingFileWritesInAdditionalDirectoriesDeleted" /> + </Delete> + + <!-- Create a list of everything that wasn't deleted. --> + <ItemGroup> + <_CleanRemainingFileWritesAfterCleanAdditionalDirectories Include="@(_CleanUniqueRemainingFileWrites)" Exclude="@(_CleanUniqueRemainingFileWritesInAdditionalDirectoriesDeleted)"/> + </ItemGroup> + + <!-- Remove duplicates. --> + <RemoveDuplicates Inputs="@(_CleanRemainingFileWritesAfterCleanAdditionalDirectories)"> + <Output TaskParameter="Filtered" ItemName="_CleanAdditionalDirectoriesUniqueRemainingFileWrites"/> + </RemoveDuplicates> + + <!-- Make sure the directory exists. --> + <MakeDir Directories="$(IntermediateOutputPath)"/> + + <!-- Write new list of current files back to disk. --> + <WriteLinesToFile File="$(IntermediateOutputPath)$(CleanFile)" Lines="@(_CleanAdditionalDirectoriesUniqueRemainingFileWrites)" Overwrite="true" /> + </Target> +</Project>
\ No newline at end of file |