94 lines
5.6 KiB
Plaintext
94 lines
5.6 KiB
Plaintext
|
<?xml version="1.0" encoding="utf-8"?>
|
||
|
<Project ToolsVersion="14.0" InitialTargets="CheckForBuildTools" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||
|
|
||
|
<PropertyGroup>
|
||
|
<IsRuntimeAssembly Condition="'$(IsRuntimeAssembly)'=='' AND '$(IsReferenceAssembly)' != 'true' AND '$(IsTestProject)' != 'true'">true</IsRuntimeAssembly>
|
||
|
<!-- Try to determine if this is a simple library without a ref project.
|
||
|
https://github.com/dotnet/corefx/issues/14291 is tracking cleaning this up -->
|
||
|
<IsRuntimeAndReferenceAssembly Condition="'$(IsRuntimeAndReferenceAssembly)' == '' and '$(IsRuntimeAssembly)' == 'true' and Exists('$(SourceDir)/$(AssemblyName)') and !Exists('$(SourceDir)/$(AssemblyName)/ref') and !$(AssemblyName.StartsWith('System.Private'))">true</IsRuntimeAndReferenceAssembly>
|
||
|
<IsNETCoreAppRef Condition="'$(IsNETCoreAppRef)' == ''">$(IsNETCoreApp)</IsNETCoreAppRef>
|
||
|
<BinPlaceStuffDependsOn Condition="'$(IsReferenceAssembly)' == 'true' OR '$(IsRuntimeAndReferenceAssembly)' == 'true'">$(BinPlaceStuffDependsOn);BinPlaceReferenceAssembly</BinPlaceStuffDependsOn>
|
||
|
<BinPlaceStuffDependsOn Condition="'$(IsRuntimeAssembly)' == 'true' OR '$(IsRuntimeAndReferenceAssembly)' == 'true'">$(BinPlaceStuffDependsOn);BinPlaceRuntimeAssembly</BinPlaceStuffDependsOn>
|
||
|
</PropertyGroup>
|
||
|
|
||
|
<ItemGroup>
|
||
|
<BinplaceConfiguration Include="$(BuildConfiguration)">
|
||
|
<RefPath>$(BuildConfigurationRefPath)</RefPath>
|
||
|
<RuntimePath>$(RuntimePath)</RuntimePath>
|
||
|
</BinplaceConfiguration>
|
||
|
<BinplaceConfiguration Condition="'$(IsNETCoreApp)' == 'true'" Include="netcoreapp-$(OSGroup)">
|
||
|
<RefPath Condition="'$(IsNETCoreAppRef)' == 'true'">$(NETCoreAppPackageRefPath)</RefPath>
|
||
|
<RuntimePath>$(NETCoreAppPackageRuntimePath)</RuntimePath>
|
||
|
</BinplaceConfiguration>
|
||
|
<BinplaceConfiguration Include="netstandard-$(OSGroup)">
|
||
|
<RefPath>$(RefRootPath)netstandard</RefPath>
|
||
|
</BinplaceConfiguration>
|
||
|
</ItemGroup>
|
||
|
|
||
|
<Target Name="BinPlaceStuff" DependsOnTargets="$(BinPlaceStuffDependsOn)" AfterTargets="CopyFilesToOutputDirectory">
|
||
|
<Message Importance="low" Text="IsRuntimeAssembly: $(IsRuntimeAssembly)" />
|
||
|
<Message Importance="low" Text="IsReferenceAssembly: $(IsReferenceAssembly)" />
|
||
|
<Message Importance="low" Text="IsRuntimeAndReferenceAssembly: $(IsRuntimeAndReferenceAssembly)" />
|
||
|
</Target>
|
||
|
|
||
|
<Target Name="BinPlaceReferenceAssembly" DependsOnTargets="GetBinplaceDirs">
|
||
|
<Message Importance="low" Text="TargetingPackDir: @(TargetingPackDir)" />
|
||
|
<Copy Condition="'@(TargetingPackDir)' != ''" SourceFiles="$(TargetPath)" DestinationFolder="%(TargetingPackDir.Identity)" >
|
||
|
<Output TaskParameter="DestinationFiles" ItemName="FileWrites" />
|
||
|
</Copy>
|
||
|
</Target>
|
||
|
|
||
|
<Target Name="BinPlaceRuntimeAssembly" DependsOnTargets="GetBinplaceDirs">
|
||
|
<Copy Condition="'@(RuntimeDir)' != ''" SourceFiles="$(TargetPath)" DestinationFolder="%(RuntimeDir.Identity)">
|
||
|
<Output TaskParameter="DestinationFiles" ItemName="FileWrites" />
|
||
|
</Copy>
|
||
|
<Copy Condition="'@(RuntimeDir)' != '' And Exists($(TargetPath.Replace('.dll', '.pdb')))" SourceFiles="$(TargetPath.Replace('.dll', '.pdb'))" DestinationFolder="%(RuntimeDir.Identity)">
|
||
|
<Output TaskParameter="DestinationFiles" ItemName="FileWrites" />
|
||
|
</Copy>
|
||
|
</Target>
|
||
|
|
||
|
<Target Name="GetBinplaceDirs" 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)'" />
|
||
|
|
||
|
<RuntimeDir Include="@(_currentBinplaceConfigurations->'%(RuntimePath)')"/>
|
||
|
<TargetingPackDir Include="@(_currentBinplaceConfigurations->'%(RefPath)')"/>
|
||
|
</ItemGroup>
|
||
|
</Target>
|
||
|
|
||
|
<ItemGroup>
|
||
|
<AdditionalCleanDirectories Include="$(BinDir)netcoreapp" />
|
||
|
</ItemGroup>
|
||
|
|
||
|
<!-- Incremental clean only cleans paths under Intermediate or OutDir, handle additional paths -->
|
||
|
<Target Name="_CleanGetCurrentAdditionalFileWrites" BeforeTargets="_CleanGetCurrentAndPriorFileWrites">
|
||
|
<!-- 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>
|
||
|
|
||
|
<Target Name="IncrementalCleanAdditionalDirectories" BeforeTargets="IncrementalClean">
|
||
|
<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>
|
||
|
</Project>
|