Merge pull request #642 from Ventero/CleanCopyLocal
authorMichael Hutchinson <m.j.hutchinson@gmail.com>
Fri, 28 Jun 2013 23:22:13 +0000 (16:22 -0700)
committerMichael Hutchinson <m.j.hutchinson@gmail.com>
Fri, 28 Jun 2013 23:22:13 +0000 (16:22 -0700)
[xbuild] Actually delete common files (CopyLocal) during Clean.

1  2 
mcs/tools/xbuild/xbuild/4.0/Microsoft.Common.targets

index 8e2c7618a5dcc24257b5d8529465b8a50d511294,3966a3c7b987e90c9b88495903728f92d2806626..0c26fe9395e10babf40f48e840c6e6ad8f493fcc
                        <Output TaskParameter="TargetFrameworkMonikerDisplayName" PropertyName="TargetFrameworkMonikerDisplayName"/>
                </GetReferenceAssemblyPaths>
  
 -              <CreateProperty Value="$(_TargetFrameworkDirectories);$(TargetFrameworkDirectory)">
 -                      <Output TaskParameter="Value" PropertyName="TargetFrameworkDirectory"/>
 -              </CreateProperty>
 +              
 +              <!-- Remove duplicates. -->
 +              <ItemGroup>
 +                      <_TargetFrameworkDirectories Include="$(_TargetFrameworkDirectories);$(TargetFrameworkDirectory)" KeepDuplicates="false" />
 +              </ItemGroup>
 +              <PropertyGroup>
 +                      <TargetFrameworkDirectory>@(_TargetFrameworkDirectories)</TargetFrameworkDirectory>
 +              </PropertyGroup>
 +              
 +              <ItemGroup Condition="'$(ImplicitlyExpandDesignTimeFacades)' == 'true'">
 +                      <DesignTimeFacadeDirectoryRoots Include="$(TargetFrameworkDirectory)" />
 +                      <DesignTimeFacadeDirectories Include="%(DesignTimeFacadeDirectoryRoots.Identity)\Facades\" Condition="Exists('%(DesignTimeFacadeDirectoryRoots.Identity)\Facades\')" />
 +                      <_DesignTimeFacadeAssemblies Include="%(DesignTimeFacadeDirectories.Identity)\*.dll"/>
 +              </ItemGroup>
 +              
 +              <PropertyGroup Condition="'@(DesignTimeFacadeDirectories)' != ''">
 +                      <TargetFrameworkDirectory>$(TargetFrameworkDirectory);@(DesignTimeFacadeDirectories)</TargetFrameworkDirectory>
 +              </PropertyGroup>
 +              
        </Target>
  
        <PropertyGroup>
                        PrepareForBuild
                </ResolveAssemblyReferencesDependsOn>
        </PropertyGroup>
 +      
 +      <PropertyGroup Condition="'$(TargetFrameworkMoniker)' != ''">
 +              <TargetFrameworkMonikerAssemblyAttributesPath Condition="'$(TargetFrameworkMonikerAssemblyAttributesPath)' == ''">$(IntermediateOutputPath)$(TargetFrameworkMoniker).AssemblyAttribute$(DefaultLanguageSourceExtension)</TargetFrameworkMonikerAssemblyAttributesPath>
 +              <GenerateTargetFrameworkAttribute Condition="'$(GenerateTargetFrameworkAttribute)' == '' and '$(TargetFrameworkMoniker)' 
 +      != '' and '$(TargetingClr2Framework)' != 'true'">true</GenerateTargetFrameworkAttribute>
 +      </PropertyGroup>
 +      
 +      <ItemGroup Condition="'$(GenerateTargetFrameworkAttribute)' == 'true'">
 +              <FileWrites Include="$(TargetFrameworkMonikerAssemblyAttributesPath)" />
 +      </ItemGroup>
 +      
 +      <Target Name="GenerateTargetFrameworkMonikerAttribute"
 +              DependsOnTargets="PrepareForBuild;GetReferenceAssemblyPaths"
 +              Inputs="$(MSBuildToolsPath)\Microsoft.Common.targets"
 +              Outputs="$(TargetFrameworkMonikerAssemblyAttributesPath)"
 +              Condition="'$(GenerateTargetFrameworkAttribute)' == 'true'">
 +              
 +              <WriteLinesToFile
 +                      File="$(TargetFrameworkMonikerAssemblyAttributesPath)"
 +                      Lines="$(TargetFrameworkMonikerAssemblyAttributeText)"
 +                      Overwrite="true"
 +                      ContinueOnError="true"
 +                      Condition="'@(Compile)' != '' and '$(TargetFrameworkMonikerAssemblyAttributeText)' != ''"
 +              />
 +      </Target>
  
        <Target Name="ResolveReferences" DependsOnTargets="$(ResolveReferencesDependsOn)"/>
  
                >
                        <Output TaskParameter="ResolvedFiles" ItemName="ResolvedFiles"/>
                        <Output TaskParameter="ResolvedFiles" ItemName="ReferencePath"/>
 -                      <Output TaskParameter="ResolvedDependencyFiles" ItemName="_ResolvedDependencyFiles"/>
 +                      <Output TaskParameter="ResolvedDependencyFiles" ItemName="ReferenceDependencyPaths"/>
                        <Output TaskParameter="RelatedFiles" ItemName="_ReferenceRelatedPaths"/>
                        <Output TaskParameter="SatelliteFiles" ItemName="ReferenceSatellitePaths"/>
                        <Output TaskParameter="CopyLocalFiles" ItemName="ReferenceCopyLocalPaths"/>
 +                      
 +                      <!-- FIXME: backwards compatibility -->
 +                      <Output TaskParameter="ResolvedDependencyFiles" ItemName="_ResolvedDependencyFiles"/>
                </ResolveAssemblyReference>
        </Target>
  
  
        <PropertyGroup>
                <BuildDependsOn>
 +                      BuildOnlySettings;
                        BeforeBuild;
                        CoreBuild;
                        AfterBuild
                </BuildDependsOn>
        </PropertyGroup>
 -
 +      
 +      <Target Name="BuildOnlySettings"/>
        <Target Name="BeforeBuild"/>
        <Target Name="AfterBuild"/>
  
        <PropertyGroup>
                <CompileDependsOn>
                        ResolveReferences;
 +                      GenerateTargetFrameworkMonikerAttribute;
                        BeforeCompile;
                        _TimestampBeforeCompile;
                        CoreCompile;
                        LicenseTarget = "$(TargetFileName)"
                        OutputDirectory = "$(IntermediateOutputPath)"
                        OutputLicense = "$(IntermediateOutputPath)$(TargetFileName).licenses"
 -                      ReferencedAssemblies = "@(ReferencePath);@(_ResolvedDependencyFiles)"
 +                      ReferencedAssemblies = "@(ReferencePath);@(ReferenceDependencyPaths)"
                        ToolPath = "$(LCToolPath)"
                        ToolExe = "$(LCToolExe)">
  
                        <Output TaskParameter="Lines" ItemName="PreviousFileWrites"/>
                </ReadLinesFromFile>
  
-               <RemoveDuplicates Inputs="@(PreviousFileWrites);@(FileWrites->'%(FullPath)')">
-                       <Output TaskParameter="Filtered" ItemName="CombinedFileWrites"/>
-               </RemoveDuplicates>
                <!-- CopyLocal files: In case all the projects build to common output
                     directory, then other projects might depend on some of these
                     CopyLocal files, so delete only the ones under *this* project
                <FindUnderPath Path="$(MSBuildProjectDirectory)" Files="@(FileWritesShareable)">
                        <Output TaskParameter="InPath" ItemName="FileWrites"/>
                </FindUnderPath>
+               <RemoveDuplicates Inputs="@(PreviousFileWrites);@(FileWrites->'%(FullPath)')">
+                       <Output TaskParameter="Filtered" ItemName="CombinedFileWrites"/>
+               </RemoveDuplicates>
  
                <WriteLinesToFile
                        File="$(IntermediateOutputPath)$(CleanFile)"
                     we can safely remove the file list now -->
                <Delete Files="$(IntermediateOutputPath)$(CleanFile)" TreatErrorsAsWarnings="true" />
        </Target>
 +      
 +      <PropertyGroup>
 +              <ImplicitlyExpandDesignTimeFacades>true</ImplicitlyExpandDesignTimeFacades>
 +
 +              <ResolveReferencesDependsOn>
 +                      $(ResolveReferencesDependsOn);
 +                      ImplicitlyExpandDesignTimeFacades
 +              </ResolveReferencesDependsOn>
 +
 +              <ImplicitlyExpandDesignTimeFacadesDependsOn>
 +                      $(ImplicitlyExpandDesignTimeFacadesDependsOn);
 +                      GetReferenceAssemblyPaths
 +              </ImplicitlyExpandDesignTimeFacadesDependsOn>
 +      </PropertyGroup>
 +      
 +      <Target Name="ImplicitlyExpandDesignTimeFacades" Condition="'$(ImplicitlyExpandDesignTimeFacades)' == 'true'" DependsOnTargets="$(ImplicitlyExpandDesignTimeFacadesDependsOn)">
 +      
 +              <PropertyGroup>
 +                      <_HasReferenceToSystemRuntime Condition="'%(_ResolvedDependencyFiles.Filename)' == 'System.Runtime'">true</_HasReferenceToSystemRuntime>
 +              </PropertyGroup>
 +
 +              <ItemGroup Condition="'$(_HasReferenceToSystemRuntime)' == 'true'">
 +                      <!-- If the user has manually referenced these assemblies, remove them so we don't end up with duplicates -->
 +                      <ReferencePath Remove="@(_DesignTimeFacadeAssemblies)"/>
 +                      <ReferencePath Include="%(_DesignTimeFacadeAssemblies.Identity)">
 +                              <WinMDFile>false</WinMDFile>
 +                              <CopyLocal>false</CopyLocal>
 +                              <ResolvedFrom>ImplicitlyExpandDesignTimeFacades</ResolvedFrom>
 +                      </ReferencePath>
 +                      <_ResolveAssemblyReferenceResolvedFiles Include="@(ReferencePath)" Condition="'%(ReferencePath.ResolvedFrom)' == 'ImplicitlyExpandDesignTimeFacades'" />
 +              </ItemGroup>
 +    
 +              <Message Importance="Low" Text="Including @(ReferencePath)" Condition="'%(ReferencePath.ResolvedFrom)' == 'ImplicitlyExpandDesignTimeFacades'" />
  
 +      </Target>
 +      
        <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\$(MSBuildThisFile)\ImportAfter\*"
                Condition="'$(ImportByWildcardAfterMicrosoftCommonTargets)' == 'true' and Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\$(MSBuildThisFile)\ImportAfter')"/>
  </Project>