summaryrefslogtreecommitdiff
path: root/.packages/microsoft.dotnet.buildtools/3.0.0-preview4-04022-01/lib/BinPlace.targets
diff options
context:
space:
mode:
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.targets205
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