<commit_before><?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <Import Condition="Exists('..\dir.props')" Project="..\dir.props" />

  <!--
    $(OS) is set to Unix/Windows_NT. This comes from an environment variable on Windows and MSBuild on Unix.
  -->
  <PropertyGroup>
    <!-- Temp change to make OS X build behave as a Linux build -->
    <OsEnvironment Condition="'$(OsEnvironment)'=='' AND '$(OS)'=='OSX'">Unix</OsEnvironment>
    <OsEnvironment Condition="'$(OsEnvironment)'==''">$(OS)</OsEnvironment>
  </PropertyGroup>

  <PropertyGroup>
    <InputOSGroup Condition="'$(InputOSGroup)'==''">$(OSEnvironment)</InputOSGroup>
  </PropertyGroup>

  <!-- Build Tools Versions -->
  <PropertyGroup>
    <RoslynVersion>1.0.0-rc3-20150510-01</RoslynVersion>
    <RoslynPackageName>Microsoft.Net.ToolsetCompilers</RoslynPackageName>
  </PropertyGroup>

  <!-- Informs build tools to apply .NET Framework metadata if not a test project -->
  <PropertyGroup>
    <IsDotNetFrameworkProductAssembly>true</IsDotNetFrameworkProductAssembly>
  </PropertyGroup>
  
  <!--
    Switching to the .NET Core version of the BuildTools tasks seems to break numerous scenarios, such as VS intellisense and resource designer
    as well as runnning the build on mono. Until we can get these sorted out we will continue using the .NET 4.5 version of the tasks.
  -->
  <PropertyGroup>
    <BuildToolsTargets45>true</BuildToolsTargets45>
  </PropertyGroup>

  <!-- Common repo directories -->
  <PropertyGroup>
    <ProjectDir>$(MSBuildThisFileDirectory)</ProjectDir>
    <SourceDir>$(ProjectDir)src/</SourceDir>

    <!-- Output directories -->
    <BinDir Condition="'$(BinDir)'==''">$(ProjectDir)bin/</BinDir>
    <ObjDir Condition="'$(ObjDir)'==''">$(BinDir)obj/</ObjDir>
    <BaseIntermediateOutputPath Condition="'$(BaseIntermediateOutputPath)'==''">$(ObjDir)</BaseIntermediateOutputPath>
    <TestWorkingDir Condition="'$(TestWorkingDir)'==''">$(BinDir)tests/</TestWorkingDir>
    <PackageOutputRoot Condition="'$(PackageOutputRoot)'==''">$(BinDir)packages/</PackageOutputRoot>

    <!-- Input Directories -->
    <PackagesDir Condition="'$(PackagesDir)'==''">$(ProjectDir)packages/</PackagesDir>
    <ToolRuntimePath Condition="'$(ToolRuntimePath)'==''">$(ProjectDir)Tools/</ToolRuntimePath>
    <ToolsDir Condition="'$(UseToolRuntimeForToolsDir)'=='true'">$(ToolRuntimePath)</ToolsDir>
    <ToolsDir Condition="'$(ToolsDir)'==''">$(ProjectDir)Tools/</ToolsDir>
    <DotnetCliPath Condition="'$(DotnetCliPath)'==''">$(ToolRuntimePath)dotnetcli/</DotnetCliPath>
    <BuildToolsTaskDir Condition="'$(BuildToolsTargets45)' == 'true'">$(ToolsDir)net45/</BuildToolsTaskDir>
    <UseRoslynCompilers Condition="'$(UseRoslynCompilers)'=='' and '$(OSEnvironment)'!='Windows_NT'">false</UseRoslynCompilers>
  </PropertyGroup>

  <Import Project="$(ToolRuntimePath)BuildVersion.targets" />
  
  <PropertyGroup>
    <!-- temporarily increase assembly version of corefx impl of desktop inbox contracts to allow folks 
         to move to the latest packages.  Remove once the full stack is on the latest packages
         https://github.com/dotnet/corefx/issues/7114 -->
    <AssemblyVersionTransition>true</AssemblyVersionTransition>
    <GenFacadesArgs>-ignoreBuildAndRevisionMismatch</GenFacadesArgs>
  </PropertyGroup>

  <!-- Use Roslyn Compilers to build -->
  <PropertyGroup Condition="'$(UseRoslynCompilers)'!='false'">
    <UseSharedCompilation>true</UseSharedCompilation>
  </PropertyGroup>
  <Import Project="$(ToolRuntimePath)/net45/roslyn/build/Microsoft.Net.Compilers.props" Condition="'$(UseRoslynCompilers)'!='false'" />

  <!-- Import Build tools common props file where repo-independent properties are found -->
  <Import Project="$(ToolsDir)Build.Common.props" />

  <!-- Enable the analyzers for this repo -->
  <PropertyGroup>
    <EnableDotnetAnalyzers Condition="'$(EnableDotnetAnalyzers)'==''">true</EnableDotnetAnalyzers>
  </PropertyGroup>

  <!-- Package dependency validation -->
  <PropertyGroup>
    <ValidatePackageVersions>true</ValidatePackageVersions>
    <ProhibitFloatingDependencies>true</ProhibitFloatingDependencies>
    <CoreFxExpectedPrerelease>rc3-24015-00</CoreFxExpectedPrerelease>
  </PropertyGroup>

  <ItemGroup>
    <ValidationPattern Include="CoreFxVersions">
      <IdentityRegex>^(?i)((System\..*)|(NETStandard\.Library)|(Microsoft\.CSharp)|(Microsoft\.NETCore.*)|(Microsoft\.TargetingPack\.Private\.(CoreCLR|NETNative))|(Microsoft\.Win32\..*)|(Microsoft\.VisualBasic))(?&lt;!TestData)$</IdentityRegex>
      <ExpectedPrerelease>$(CoreFxExpectedPrerelease)</ExpectedPrerelease>
    </ValidationPattern>
    <ValidationPattern Include="TargetingPackVersions">
      <IdentityRegex>^(?i)Microsoft\.TargetingPack\.(NetFramework.*|Private\.WinRT)$</IdentityRegex>
      <ExpectedVersion>1.0.1</ExpectedVersion>
    </ValidationPattern>
    <ValidationPattern Include="xUnitStableVersions">
      <IdentityRegex>^(?i)xunit$</IdentityRegex>
      <ExpectedVersion>2.1.0</ExpectedVersion>
    </ValidationPattern>
    <ValidationPattern Include="xUnitExtensionsVersions">
      <IdentityRegex>^(?i)xunit\.netcore\.extensions$</IdentityRegex>
      <ExpectedVersion>1.0.0-prerelease-00312-04</ExpectedVersion>
    </ValidationPattern>
  </ItemGroup>

  <!-- Import packaging props -->
  <Import Project="$(MSBuildThisFileDirectory)Packaging.props"/>

  <!-- list of nuget package sources passed to dnu -->
  <ItemGroup Condition="'$(ExcludeInternetFeeds)' != 'true'">
    <!-- PackagesDrops is passed in via the commandline "/p:PackagesDrops=[drop location]" -->
    <DnuSourceList Condition="'$(BuildTestsAgainstPackages)' == 'true'" Include="$(PackagesDrops)" />
    <!-- Need to escape double forward slash (%2F) or MSBuild will normalize to one slash on Unix. -->
    <DnuSourceList Include="https:%2F%2Fdotnet.myget.org/F/dotnet-core/api/v3/index.json" />
    <DnuSourceList Include="https:%2F%2Fwww.nuget.org/api/v2/" />
  </ItemGroup>

  <!-- This is the directory where we dynamically generate project.json's for our test build package dependencies -->
  <PropertyGroup Condition="'$(BuildTestsAgainstPackages)' == 'true'">
      <GeneratedProjectJsonDir>$(ObjDir)generated</GeneratedProjectJsonDir>
  </PropertyGroup>

  <!-- list of directories to perform batch restore -->
  <ItemGroup>
    <DnuRestoreDir Include="$(MSBuildThisFileDirectory)/src" />
    <DnuRestoreDir Include="$(MSBuildThisFileDirectory)/pkg" />
    <DnuRestoreDir Condition="'$(BuildTestsAgainstPackages)' == 'true'" Include="$(GeneratedProjectJsonDir)" />
  </ItemGroup>

  <PropertyGroup>
    <DnxPackageDir Condition="'$(DnxPackageDir)'==''">$(PackagesDir)/$(DnxPackageName)/</DnxPackageDir>
    <DnuToolPath Condition="'$(DnuToolPath)'=='' and '$(OsEnvironment)'!='Unix'">$(DnxPackageDir)/bin/dnu.cmd</DnuToolPath>
    <DnuToolPath Condition="'$(DnuToolPath)'=='' and '$(OsEnvironment)'=='Unix'">$(DnxPackageDir)/bin/dnu</DnuToolPath>
    <DotnetToolCommand Condition="'$(DotnetToolCommand)' == '' and '$(OsEnvironment)'!='Unix'">$(DotnetCliPath)dotnet.exe</DotnetToolCommand>
    <DotnetToolCommand Condition="'$(DotnetToolCommand)' == '' and '$(OsEnvironment)'=='Unix'">$(DotnetCliPath)dotnet</DotnetToolCommand>
    <DnuToolPath>$(DotnetToolCommand)</DnuToolPath>

    <DnuRestoreSource>@(DnuSourceList -> '--source %(Identity)', ' ')</DnuRestoreSource>

    <DnuRestoreCommand>"$(DnuToolPath)"</DnuRestoreCommand>
    <DnuRestoreCommand>$(DnuRestoreCommand) restore</DnuRestoreCommand>
    <DnuRestoreCommand Condition="'$(ParallelRestore)'=='true'">$(DnuRestoreCommand) --parallel</DnuRestoreCommand>
    <DnuRestoreCommand>$(DnuRestoreCommand) --packages "$(PackagesDir.TrimEnd('/\'.ToCharArray()))" $(DnuRestoreSource)</DnuRestoreCommand>
    <DnuRestoreCommand Condition="'$(LockDependencies)' == 'true'">$(DnuRestoreCommand) --lock</DnuRestoreCommand>
    <DnuRestoreCommand Condition="'$(NuGetConfigPath)'!=''">$(DnuRestoreCommand) --configfile $(NuGetConfigPath)</DnuRestoreCommand>
    <DnuRestoreCommand Condition="'$(InferRuntimes)'!='false'">$(DnuRestoreCommand) --infer-runtimes</DnuRestoreCommand>
  </PropertyGroup>

  <!-- Create a collection of all project.json files for dependency updates. -->
  <ItemGroup>
    <ProjectJsonFiles Include="$(SourceDir)**/project.json" />
    <ProjectJsonFiles Include="$(MSBuildThisFileDirectory)/pkg/**/project.json" />
  </ItemGroup>

  <PropertyGroup Condition="'$(BuildAllProjects)'=='true'">
    <!-- When we do a traversal build we get all packages up front, don't restore them again -->
    <RestorePackages>false</RestorePackages><commit_msg>Remove --infer-runtimes restore arg: runtimes specified in project.json files.<commit_after><?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <Import Condition="Exists('..\dir.props')" Project="..\dir.props" />

  <!--
    $(OS) is set to Unix/Windows_NT. This comes from an environment variable on Windows and MSBuild on Unix.
  -->
  <PropertyGroup>
    <!-- Temp change to make OS X build behave as a Linux build -->
    <OsEnvironment Condition="'$(OsEnvironment)'=='' AND '$(OS)'=='OSX'">Unix</OsEnvironment>
    <OsEnvironment Condition="'$(OsEnvironment)'==''">$(OS)</OsEnvironment>
  </PropertyGroup>

  <PropertyGroup>
    <InputOSGroup Condition="'$(InputOSGroup)'==''">$(OSEnvironment)</InputOSGroup>
  </PropertyGroup>

  <!-- Build Tools Versions -->
  <PropertyGroup>
    <RoslynVersion>1.0.0-rc3-20150510-01</RoslynVersion>
    <RoslynPackageName>Microsoft.Net.ToolsetCompilers</RoslynPackageName>
  </PropertyGroup>

  <!-- Informs build tools to apply .NET Framework metadata if not a test project -->
  <PropertyGroup>
    <IsDotNetFrameworkProductAssembly>true</IsDotNetFrameworkProductAssembly>
  </PropertyGroup>
  
  <!--
    Switching to the .NET Core version of the BuildTools tasks seems to break numerous scenarios, such as VS intellisense and resource designer
    as well as runnning the build on mono. Until we can get these sorted out we will continue using the .NET 4.5 version of the tasks.
  -->
  <PropertyGroup>
    <BuildToolsTargets45>true</BuildToolsTargets45>
  </PropertyGroup>

  <!-- Common repo directories -->
  <PropertyGroup>
    <ProjectDir>$(MSBuildThisFileDirectory)</ProjectDir>
    <SourceDir>$(ProjectDir)src/</SourceDir>

    <!-- Output directories -->
    <BinDir Condition="'$(BinDir)'==''">$(ProjectDir)bin/</BinDir>
    <ObjDir Condition="'$(ObjDir)'==''">$(BinDir)obj/</ObjDir>
    <BaseIntermediateOutputPath Condition="'$(BaseIntermediateOutputPath)'==''">$(ObjDir)</BaseIntermediateOutputPath>
    <TestWorkingDir Condition="'$(TestWorkingDir)'==''">$(BinDir)tests/</TestWorkingDir>
    <PackageOutputRoot Condition="'$(PackageOutputRoot)'==''">$(BinDir)packages/</PackageOutputRoot>

    <!-- Input Directories -->
    <PackagesDir Condition="'$(PackagesDir)'==''">$(ProjectDir)packages/</PackagesDir>
    <ToolRuntimePath Condition="'$(ToolRuntimePath)'==''">$(ProjectDir)Tools/</ToolRuntimePath>
    <ToolsDir Condition="'$(UseToolRuntimeForToolsDir)'=='true'">$(ToolRuntimePath)</ToolsDir>
    <ToolsDir Condition="'$(ToolsDir)'==''">$(ProjectDir)Tools/</ToolsDir>
    <DotnetCliPath Condition="'$(DotnetCliPath)'==''">$(ToolRuntimePath)dotnetcli/</DotnetCliPath>
    <BuildToolsTaskDir Condition="'$(BuildToolsTargets45)' == 'true'">$(ToolsDir)net45/</BuildToolsTaskDir>
    <UseRoslynCompilers Condition="'$(UseRoslynCompilers)'=='' and '$(OSEnvironment)'!='Windows_NT'">false</UseRoslynCompilers>
  </PropertyGroup>

  <Import Project="$(ToolRuntimePath)BuildVersion.targets" />
  
  <PropertyGroup>
    <!-- temporarily increase assembly version of corefx impl of desktop inbox contracts to allow folks 
         to move to the latest packages.  Remove once the full stack is on the latest packages
         https://github.com/dotnet/corefx/issues/7114 -->
    <AssemblyVersionTransition>true</AssemblyVersionTransition>
    <GenFacadesArgs>-ignoreBuildAndRevisionMismatch</GenFacadesArgs>
  </PropertyGroup>

  <!-- Use Roslyn Compilers to build -->
  <PropertyGroup Condition="'$(UseRoslynCompilers)'!='false'">
    <UseSharedCompilation>true</UseSharedCompilation>
  </PropertyGroup>
  <Import Project="$(ToolRuntimePath)/net45/roslyn/build/Microsoft.Net.Compilers.props" Condition="'$(UseRoslynCompilers)'!='false'" />

  <!-- Import Build tools common props file where repo-independent properties are found -->
  <Import Project="$(ToolsDir)Build.Common.props" />

  <!-- Enable the analyzers for this repo -->
  <PropertyGroup>
    <EnableDotnetAnalyzers Condition="'$(EnableDotnetAnalyzers)'==''">true</EnableDotnetAnalyzers>
  </PropertyGroup>

  <!-- Package dependency validation -->
  <PropertyGroup>
    <ValidatePackageVersions>true</ValidatePackageVersions>
    <ProhibitFloatingDependencies>true</ProhibitFloatingDependencies>
    <CoreFxExpectedPrerelease>rc3-24015-00</CoreFxExpectedPrerelease>
  </PropertyGroup>

  <ItemGroup>
    <ValidationPattern Include="CoreFxVersions">
      <IdentityRegex>^(?i)((System\..*)|(NETStandard\.Library)|(Microsoft\.CSharp)|(Microsoft\.NETCore.*)|(Microsoft\.TargetingPack\.Private\.(CoreCLR|NETNative))|(Microsoft\.Win32\..*)|(Microsoft\.VisualBasic))(?&lt;!TestData)$</IdentityRegex>
      <ExpectedPrerelease>$(CoreFxExpectedPrerelease)</ExpectedPrerelease>
    </ValidationPattern>
    <ValidationPattern Include="TargetingPackVersions">
      <IdentityRegex>^(?i)Microsoft\.TargetingPack\.(NetFramework.*|Private\.WinRT)$</IdentityRegex>
      <ExpectedVersion>1.0.1</ExpectedVersion>
    </ValidationPattern>
    <ValidationPattern Include="xUnitStableVersions">
      <IdentityRegex>^(?i)xunit$</IdentityRegex>
      <ExpectedVersion>2.1.0</ExpectedVersion>
    </ValidationPattern>
    <ValidationPattern Include="xUnitExtensionsVersions">
      <IdentityRegex>^(?i)xunit\.netcore\.extensions$</IdentityRegex>
      <ExpectedVersion>1.0.0-prerelease-00312-04</ExpectedVersion>
    </ValidationPattern>
  </ItemGroup>

  <!-- Import packaging props -->
  <Import Project="$(MSBuildThisFileDirectory)Packaging.props"/>

  <!-- list of nuget package sources passed to dnu -->
  <ItemGroup Condition="'$(ExcludeInternetFeeds)' != 'true'">
    <!-- PackagesDrops is passed in via the commandline "/p:PackagesDrops=[drop location]" -->
    <DnuSourceList Condition="'$(BuildTestsAgainstPackages)' == 'true'" Include="$(PackagesDrops)" />
    <!-- Need to escape double forward slash (%2F) or MSBuild will normalize to one slash on Unix. -->
    <DnuSourceList Include="https:%2F%2Fdotnet.myget.org/F/dotnet-core/api/v3/index.json" />
    <DnuSourceList Include="https:%2F%2Fwww.nuget.org/api/v2/" />
  </ItemGroup>

  <!-- This is the directory where we dynamically generate project.json's for our test build package dependencies -->
  <PropertyGroup Condition="'$(BuildTestsAgainstPackages)' == 'true'">
      <GeneratedProjectJsonDir>$(ObjDir)generated</GeneratedProjectJsonDir>
  </PropertyGroup>

  <!-- list of directories to perform batch restore -->
  <ItemGroup>
    <DnuRestoreDir Include="$(MSBuildThisFileDirectory)/src" />
    <DnuRestoreDir Include="$(MSBuildThisFileDirectory)/pkg" />
    <DnuRestoreDir Condition="'$(BuildTestsAgainstPackages)' == 'true'" Include="$(GeneratedProjectJsonDir)" />
  </ItemGroup>

  <PropertyGroup>
    <DnxPackageDir Condition="'$(DnxPackageDir)'==''">$(PackagesDir)/$(DnxPackageName)/</DnxPackageDir>
    <DnuToolPath Condition="'$(DnuToolPath)'=='' and '$(OsEnvironment)'!='Unix'">$(DnxPackageDir)/bin/dnu.cmd</DnuToolPath>
    <DnuToolPath Condition="'$(DnuToolPath)'=='' and '$(OsEnvironment)'=='Unix'">$(DnxPackageDir)/bin/dnu</DnuToolPath>
    <DotnetToolCommand Condition="'$(DotnetToolCommand)' == '' and '$(OsEnvironment)'!='Unix'">$(DotnetCliPath)dotnet.exe</DotnetToolCommand>
    <DotnetToolCommand Condition="'$(DotnetToolCommand)' == '' and '$(OsEnvironment)'=='Unix'">$(DotnetCliPath)dotnet</DotnetToolCommand>
    <DnuToolPath>$(DotnetToolCommand)</DnuToolPath>

    <DnuRestoreSource>@(DnuSourceList -> '--source %(Identity)', ' ')</DnuRestoreSource>

    <DnuRestoreCommand>"$(DnuToolPath)"</DnuRestoreCommand>
    <DnuRestoreCommand>$(DnuRestoreCommand) restore</DnuRestoreCommand>
    <DnuRestoreCommand Condition="'$(ParallelRestore)'=='true'">$(DnuRestoreCommand) --parallel</DnuRestoreCommand>
    <DnuRestoreCommand>$(DnuRestoreCommand) --packages "$(PackagesDir.TrimEnd('/\'.ToCharArray()))" $(DnuRestoreSource)</DnuRestoreCommand>
    <DnuRestoreCommand Condition="'$(LockDependencies)' == 'true'">$(DnuRestoreCommand) --lock</DnuRestoreCommand>
    <DnuRestoreCommand Condition="'$(NuGetConfigPath)'!=''">$(DnuRestoreCommand) --configfile $(NuGetConfigPath)</DnuRestoreCommand>
  </PropertyGroup>

  <!-- Create a collection of all project.json files for dependency updates. -->
  <ItemGroup>
    <ProjectJsonFiles Include="$(SourceDir)**/project.json" />
    <ProjectJsonFiles Include="$(MSBuildThisFileDirectory)/pkg/**/project.json" />
  </ItemGroup>

  <PropertyGroup Condition="'$(BuildAllProjects)'=='true'">
    <!-- When we do a traversal build we get all packages up front, don't restore them again -->
    <RestorePackages>false</RestorePackages>
{'fraction_non_alphanumeric': 0.16833563535911603, 'fraction_numerical': 0.008402394106813996, 'mean_word_length': 5.594686907020873, 'pattern_counts': {'":': 0, '<': 363, '<?xml version=': 2, '>': 365, 'https://': 2, 'lorem ipsum': 0, 'www.': 2, 'xml': 4}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '5669258', 'n_tokens_mistral': 5486, 'n_tokens_neox': 4942, 'n_words': 870}