diff options
Diffstat (limited to 'src/shims/ApiCompat.proj')
-rw-r--r-- | src/shims/ApiCompat.proj | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/src/shims/ApiCompat.proj b/src/shims/ApiCompat.proj new file mode 100644 index 0000000000..6c640b9be5 --- /dev/null +++ b/src/shims/ApiCompat.proj @@ -0,0 +1,55 @@ +<?xml version="1.0" encoding="utf-8"?> +<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" DefaultTargets="Build"> + <Import Project="dir.props" /> + + <PropertyGroup> + <ApiCompatResponseFile>$(IntermediateOutputPath)/apicompat.rsp</ApiCompatResponseFile> + <ApiCompatBaselineFile>$(MSBuildThisFileDirectory)ApiCompatBaseline.$(TargetGroup).netfx461.txt</ApiCompatBaselineFile> + <ApiCompatNSBaselineFile>$(MSBuildThisFileDirectory)ApiCompatBaseline.$(TargetGroup).netstandard20.txt</ApiCompatNSBaselineFile> + <ApiCompatImplementationDirs>$(RefPath),$(GenFacadesOutputPath)</ApiCompatImplementationDirs> + <!-- If we are targeting uap or uapaot run ApiCompat against the implementation assemblies instead since they don't match the reference assemblies --> + <ApiCompatImplementationDirs Condition="'$(TargetGroup)'=='uap' or '$(TargetGroup)'=='uapaot'">$(RuntimePath),$(GenFacadesOutputPath)</ApiCompatImplementationDirs> + </PropertyGroup> + + <!-- Run ApiCompat --> + <Target Name="RunApiCompat" + Inputs="$(ApiCompatResponseFile);@(GenFacadesContracts)" + Outputs="$(ApiCompatBaselineFile);$(ApiCompatNSBaselineFile)" + > + <PropertyGroup> + <ApiCompatArgs>$(ApiCompatArgs) -implDirs:"$(ApiCompatImplementationDirs)"</ApiCompatArgs> + <ApiCompatExitCode>0</ApiCompatExitCode> + + <ApiCompatCmd>$(ToolHostCmd) "$(ToolsDir)ApiCompat.exe"</ApiCompatCmd> + </PropertyGroup> + + <MakeDir Directories="$(IntermediateOutputPath)" /> + <WriteLinesToFile File="$(ApiCompatResponseFile)" Lines="$(ApiCompatArgs)" Overwrite="true" /> + + <Exec Command="$(ApiCompatCmd) "@(NetFxReference->'$(NetFxRefPath)%(Identity).dll')" @"$(ApiCompatResponseFile)" > $(ApiCompatBaselineFile)" + Condition="'$(TargetGroup)'=='netcoreapp'" + CustomErrorRegularExpression="^[a-zA-Z]+ :" + StandardOutputImportance="Low" + IgnoreExitCode="true" + > + <Output TaskParameter="ExitCode" PropertyName="ApiCompatExitCode" /> + </Exec> + + <Exec Command="$(ApiCompatCmd) "$(NetStandardRefPath)" @"$(ApiCompatResponseFile)" > $(ApiCompatNSBaselineFile)" + CustomErrorRegularExpression="^[a-zA-Z]+ :" + StandardOutputImportance="Low" + IgnoreExitCode="true" + > + <Output TaskParameter="ExitCode" PropertyName="ApiCompatExitCode" /> + </Exec> + + </Target> + + <Target Name="Build" DependsOnTargets="RunApiCompat" /> + <Target Name="Clean"> + <RemoveDir Directories="$(IntermediateOutputPath);$(GenFacadesOutputPath)" /> + </Target> + <Target Name="Rebuild" DependsOnTargets="Clean;Build" /> + + <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.targets))\dir.targets" /> +</Project> |