1<!--
2***********************************************************************************************
3Microsoft.Common.Mono.After.targets
4
5WARNING:  DO NOT MODIFY this file unless you are knowledgeable about MSBuild and have
6          created a backup copy.  Incorrect changes to this file will make it
7          impossible to load or build your projects from the command-line or the IDE.
8
9Copyright (C) Microsoft Corporation. All rights reserved.
10***********************************************************************************************
11-->
12
13<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
14    <UsingTask TaskName="Mono.Build.Tasks.FilterDeniedAssemblies" AssemblyFile="$(MSBuildExtensionsPath)\Mono.Build.Tasks.dll" />
15
16    <!--
17         This closely depends on Microsoft/Microsoft.NET.Build.Extensions/Microsoft.NET.Build.Extensions.NETFramework.targets .
18         Specifically, on the `ImplicitlyExpandNETStandardFacades` target which sets
19
20            $(ImplicitlyExpandNETStandardFacades),
21            $(DependsOnNETStandard) and
22            $(NETStandardInbox)
23
24        and is enabled only for '$(TargetFrameworkIdentifier)' == '.NETFramework'.
25
26        Default:
27        - Run this only for .net framework projects 4.6.1 - 4.7, which have any references depending on netstandard
28         -->
29    <Target
30        Name="FilterDeniedAssemblyReferences"
31        BeforeTargets="ResolveAssemblyReferences"
32        Condition="'$(FilterDeniedAssemblies)' == 'true'
33                        or ('$(EnableFilteringDeniedAssembliesForNet46xProjects)' != 'false' and '$(FilterDeniedAssemblies)' == ''
34                            and '$(TargetFrameworkIdentifier)' == '.NETFramework' and '$(ImplicitlyExpandNETStandardFacades)' == 'true'
35                            and '$(DependsOnNETStandard)' == 'true'  AND '$(NETStandardInbox)' != 'true' AND '$(_TargetFrameworkVersionWithoutV)' &lt; '4.7.1')">
36
37        <FilterDeniedAssemblies References="@(Reference)" SearchPaths="$(TargetFrameworkDirectory);$(DesignTimeFacadeDirectories)">
38            <Output TaskParameter="DeniedReferencesThatCouldNotBeFixed" ItemName="DeniedReferencesThatCouldNotBeFixed" />
39            <Output TaskParameter="FilteredReferences" ItemName="FilteredReferences" />
40        </FilterDeniedAssemblies>
41
42        <ItemGroup>
43            <Reference Remove="@(Reference)" />
44            <Reference Include="@(FilteredReferences)" />
45        </ItemGroup>
46    </Target>
47
48</Project>
49