<commit_before><Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <!--
  Projects that only include templates do not need to include or deploy
  certain files in the VSIX.
  
  By default, we don't even create a VSIX, since the project may contain
  exactly one template that is referenced by a single project that creates
  the VSIX. This last project explicitly sets CreateVisxContainer to true.
  -->
  <PropertyGroup Condition="$(UseVSSDKTemplateOnly)">
    <CreateVsixContainer Condition="'$(CreateVsixContainer)' == ''">false</CreateVsixContainer>
    <CopyVsixManifestToOutput>$(CreateVsixContainer)</CopyVsixManifestToOutput>
    <GeneratePkgDefFile Condition="'$(GeneratePkgDefFile)' == ''">false</GeneratePkgDefFile>
    <DeployExtension>false</DeployExtension>
    <CopyBuildOutputToOutputDirectory>false</CopyBuildOutputToOutputDirectory>
    <CopyOutputSymbolsToOutputDirectory>false</CopyOutputSymbolsToOutputDirectory>
    <IncludeVSIXItemsFromTargets>BuiltVsixTemplateItems</IncludeVSIXItemsFromTargets>
  </PropertyGroup>

  <PropertyGroup>
    <!--
    To specify a different registry root to register your package, uncomment the TargetRegistryRoot
    tag and specify a registry root in it.
    <TargetRegistryRoot></TargetRegistryRoot>
    -->
    <RegisterWithCodebase Condition="'$(RegisterWithCodebase)' == ''">true</RegisterWithCodebase>
  </PropertyGroup>

  <!--
  Inside Visual Studio, we want to deploy to the experimental hive when
  building for ease of debugging.
  -->
  <PropertyGroup Condition="'$(BuildingInsideVisualStudio)' == 'true'">
    <DeployExtension Condition="'$(DeployExtension)' == ''">true</DeployExtension>
    <DeployVSTemplates Condition="'$(DeployVSTemplates)' == ''">false</DeployVSTemplates>
    <CreateVsixContainer Condition="'$(CreateVsixContainer)' == ''">false</CreateVsixContainer>
    <CopyVsixManifestToOutput Condition="'$(CopyVsixManifestToOutput)' == ''">true</CopyVsixManifestToOutput>
    <RegisterOutputPackage Condition="'$(RegisterOutputPackage)' == ''">true</RegisterOutputPackage>
  </PropertyGroup>
  
  <!--
  Outside of Visual Studio, we want to create VSIX containers rather than
  deploying to the experimental hive.
  -->
  <PropertyGroup Condition="'$(BuildingInsideVisualStudio)' != 'true'">
    <DeployExtension Condition="'$(DeployExtension)' == ''">false</DeployExtension>
    <DeployVSTemplates Condition="'$(DeployVSTemplates)' == ''">false</DeployVSTemplates>
    <CreateVsixContainer Condition="'$(CreateVsixContainer)' == ''">false</CreateVsixContainer>
    <CopyVsixManifestToOutput Condition="'$(CopyVsixManifestToOutput)' == ''">true</CopyVsixManifestToOutput>
    <RegisterOutputPackage Condition="'$(RegisterOutputPackage)' == ''">false</RegisterOutputPackage>
  </PropertyGroup>

  <!--
  If a VSIX is being created, we want to copy its contents to a location
  where it can be signed and zipped.
  -->
  <PropertyGroup Condition="$(CreateVsixContainer)">
    <CopyVsixExtensionFiles Condition="'$(CopyVsixExtensionFiles)' == ''">true</CopyVsixExtensionFiles>
    <CopyVsixExtensionLocation>$(CopyVsixExtensionRoot)$(TargetName)\</CopyVsixExtensionLocation>
    <TargetVsixContainerName Condition="'$(TargetVsixContainerName)'==''">$(TargetName).vsix</TargetVsixContainerName>
    <TargetVsixContainer Condition="'$(TargetVsixContainer)'==''">$(BuildOutputRoot)setup\$(TargetVsixContainerName)</TargetVsixContainer>
  </PropertyGroup>

  <Target Name="_CreateVsixContainerPath" Condition="$(CreateVsixContainer) and !Exists('$(BuildOutputRoot)setup')" BeforeTargets="PrepareForBuild">
    <MakeDir Directories="$(BuildOutputRoot)setup" ContinueOnError="true" />
  </Target>

  <!-- Import the normal VS SDK headers -->
  <Import Project="$(VSToolsPath)\VSSDK\Microsoft.VsSDK.targets" />

  <!-- For non-debug builds, don't copy debug symbols -->
  <Target Name="_ClearVSIXSourceItemLocalOnly"
          BeforeTargets="CopyVsixExtensionFiles"
          Condition="$(CreateVsixContainer) and $(Configuration) != 'Debug'">
    <ItemGroup>
      <_VSIXSourceItemLocalOnly Include="@(VSIXSourceItemLocalOnly)" />
      <VSIXSourceItemLocalOnly Remove="@(VSIXSourceItemLocalOnly)" />
    </ItemGroup>
  </Target>

  <Target Name="_RestoreVSIXSourceItemLocalOnly"
          AfterTargets="CopyVsixExtensionFiles"
          Condition="$(CreateVsixContainer) and $(Configuration) != 'Debug'">
    <ItemGroup>
      <VSIXSourceItemLocalOnly Include="@(_VSIXSourceItemLocalOnly)" />
      <_VSIXSourceItemLocalOnly Remove="@(_VSIXSourceItemLocalOnly)" />
    </ItemGroup>
  </Target>
  
  <!--
  Our GetVSIXSourceItems does not trigger vsixmanifest generation, so update
  the target dependencies to bypass it.
  -->
  <PropertyGroup>
    <ValidateVsixPartsDependsOn>DetokenizeVsixManifestFile;$(ValidateVsixPartsDependsOn)</ValidateVsixPartsDependsOn>
  </PropertyGroup>

  <!-- Provide a target to include templates -->
  <Target Name="BuiltVsixTemplateItems"
          DependsOnTargets="ZipProjects;ZipItems"
          Returns="@(TemplateZip)">
    <ItemGroup>
      <TemplateZip Include="@(IntermediateZipItem)">
        <TemplateSubPath>ItemTemplates\%(IntermediateZipItem.Language)\%(IntermediateZipItem.OutputSubPath)\%(IntermediateZipItem.Culture)</TemplateSubPath>
      </TemplateZip>
      <TemplateZip Include="@(IntermediateZipProject)">
        <TemplateSubPath>ProjectTemplates\%(IntermediateZipProject.Language)\%(IntermediateZipProject.OutputSubPath)\%(IntermediateZipProject.Culture)</TemplateSubPath>
      </TemplateZip>
    </ItemGroup>
  </Target>

  <PropertyGroup>
    <IncludeVSIXItemsFromTargets Condition="!$(UseVSSDKTemplateOnly)">$(IncludeVSIXItemsFromTargets);BuiltVsixTemplateItems</IncludeVSIXItemsFromTargets>
  </PropertyGroup>


  <!-- Copy built templates to the project's output directory -->
  <Target Name="CopyTemplatesToOutput"
          DependsOnTargets="BuiltVsixTemplateItems"
          Inputs="@(TemplateZip)"
          Outputs="@(TemplateZip->'$(OutputPath)%(TemplateSubPath)\%(Filename)%(Extension)')"
          AfterTargets="CopyFilesToOutputDirectory">
    <Copy SourceFiles="@(TemplateZip)"
          DestinationFiles="@(TemplateZip->'$(OutputPath)%(TemplateSubPath)\%(Filename)%(Extension)')"
          SkipUnchangedFiles="true">
      <Output TaskParameter="CopiedFiles" ItemName="FileWrites"/>
    </Copy>
  </Target>
  
  <!-- Copy extension files to the project's output directory -->
  <Target Name="CopyVSSDKFilesToOutput"
          DependsOnTargets="CopyVsixManifestFile;CopyPkgDef"
          BeforeTargets="AfterBuild" />
  
  <!--
  Copies the VS-specific theme file to the output directory.
  
  Themes should be stored in a Theme directory of the project and be named
  matching the output assembly and the target VS version, for example:
      Microsoft.PythonTools.theme.v12.0.pkgdef
  -->
  <ItemGroup>
    <_ThemePkgDef Include="Theme\**\*.theme.v$(VSTarget).pkgdef">
      <IntermediateFile>$(IntermediateOutputPath)$([System.String]::New(`%(Identity)`).Replace(`.v$(VSTarget)`, ``))</IntermediateFile>
    </_ThemePkgDef>
  </ItemGroup>

  <Target Name="_IncludeThemePkgdef" BeforeTargets="PrepareForBuild" Inputs="@(_ThemePkgDef)" Outputs="@(_ThemePkgDef->'%(IntermediateFile)')">
    <Copy SourceFiles="@(_ThemePkgDef)"
          DestinationFiles="@(_ThemePkgDef->'%(IntermediateFile)')">
        <Output TaskParameter="CopiedFiles" ItemName="_CopiedThemePkgDef" />
        <Output TaskParameter="CopiedFiles" ItemName="FileWrites" />
    </Copy>
    <ItemGroup>
      <Content Include="@(_ThemePkgDef->'%(IntermediateFile)')">
        <IncludeInVsix>true</IncludeInVsix>
        <VSIXSubPath>.</VSIXSubPath>
        <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
      </Content>
    </ItemGroup>
  </Target>


  <!--
  Zip folders containing VSIX files. These folders must have been created
  by previously having built the project.
  -->
  <Target Name="_GetRezipVSIXFiles" Condition="$([msbuild]::ValueOrDefault($(RezipVSIXFiles), `false`))">
    <ItemGroup>
      <VSIX Include="$(CopyVsixExtensionRoot)*\extension.vsixmanifest" />
      <VSIX>
        <SourceDir>%(VSIX.RootDir)%(VSIX.Directory)</SourceDir>
        <Container>$(BuildOutputRoot)setup\$([System.IO.Path]::GetFileName($([System.String]::new(%(VSIX.Directory)).TrimEnd(`\`)))).vsix</Container>
      </VSIX>
      
      <FilesToSign Include="@(VSIX->'%(Container)')" Condition="$([msbuild]::ValueOrDefault($(SignRezippedVSIXFiles), `false`))">
        <Authenticode>vsix</Authenticode>
      </FilesToSign>
    </ItemGroup>
  </Target>
  
  <Target Name="_GetBinariesInLayout" DependsOnTargets="_GetRezipVSIXFiles" Condition="$([msbuild]::ValueOrDefault($(SignRezippedVSIXFiles), `false`))">
    <ItemGroup>
      <_BinariesInLayout Include="%(VSIX.SourceDir)**\*.exe;%(VSIX.SourceDir)**\*.dll" Condition="Exists('$(BuildOutputRoot)binaries\%(Filename)%(Extension)')">
        <TargetPath>$(BuildOutputRoot)binaries\%(Filename)%(Extension)</TargetPath>
      </_BinariesInLayout>
    </ItemGroup>
  </Target>
  
  <Target Name="_UpdateLayoutWithSignedBinaries" DependsOnTargets="_GetBinariesInLayout" Inputs="@(_BinariesInLayout)" Outputs="@(_BinariesInLayout->'%(TargetPath)')">
    <Message Text="Updating %(VSIX.SourceDir) from $(BuildOutputRoot)binaries" />
    <Copy SourceFiles="@(_BinariesInLayout)" DestinationFiles="@(_BinariesInLayout->'%(TargetPath)')" />
  </Target>

  <Target Name="_RezipSingleVSIX_Dev12_14" DependsOnTargets="_GetRezipVSIXFiles;_UpdateLayoutWithSignedBinaries" BeforeTargets="Build" Inputs="@(VSIX)" Outputs="%(VSIX.Container)" Condition="'$(VSTarget)' == '12.0' or '$(VSTarget)' == '14.0'">
    <Message Text="Rezipping %(VSIX.SourceDir) to %(VSIX.Container)" Importance="high" />
    
    <ItemGroup>
      <_VSIXSourceItems Include="%(VSIX.SourceDir)**\*" />
      <_VSIXSourceItems>
        <TargetPath>%(RecursiveDir)%(Filename)%(Extension)</TargetPath>
      </_VSIXSourceItems>
    </ItemGroup>
    
    <PropertyGroup>
      <_Container>%(VSIX.Container)</_Container>
    </PropertyGroup>

    <CreateZipPackage Files="@(_VSIXSourceItems)" ZipPackage="$(_Container)" CompressionLevel="$(ZipPackageCompressionLevel)">
      <Output TaskParameter="ZipPackage" ItemName="FileWrites" />
    </CreateZipPackage>
  </Target>

  <Target Name="_RezipSingleVSIX_Dev10_11" DependsOnTargets="_GetRezipVSIXFiles;_UpdateLayoutWithSignedBinaries" BeforeTargets="Build" Inputs="@(VSIX)" Outputs="%(VSIX.Container)" Condition="'$(VSTarget)' == '10.0' or '$(VSTarget)' == '11.0'">
    <Message Text="Rezipping %(VSIX.SourceDir)" Importance="high" />
    
    <ItemGroup>
      <_VSIXSourceItems Include="%(VSIX.SourceDir)**\*" />
      <_VSIXSourceItems>
        <TargetPath>%(RecursiveDir)%(Filename)%(Extension)</TargetPath>
      </_VSIXSourceItems>
    </ItemGroup><commit_msg>Fixes copy direction for signed binaries.<commit_after><Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <!--
  Projects that only include templates do not need to include or deploy
  certain files in the VSIX.
  
  By default, we don't even create a VSIX, since the project may contain
  exactly one template that is referenced by a single project that creates
  the VSIX. This last project explicitly sets CreateVisxContainer to true.
  -->
  <PropertyGroup Condition="$(UseVSSDKTemplateOnly)">
    <CreateVsixContainer Condition="'$(CreateVsixContainer)' == ''">false</CreateVsixContainer>
    <CopyVsixManifestToOutput>$(CreateVsixContainer)</CopyVsixManifestToOutput>
    <GeneratePkgDefFile Condition="'$(GeneratePkgDefFile)' == ''">false</GeneratePkgDefFile>
    <DeployExtension>false</DeployExtension>
    <CopyBuildOutputToOutputDirectory>false</CopyBuildOutputToOutputDirectory>
    <CopyOutputSymbolsToOutputDirectory>false</CopyOutputSymbolsToOutputDirectory>
    <IncludeVSIXItemsFromTargets>BuiltVsixTemplateItems</IncludeVSIXItemsFromTargets>
  </PropertyGroup>

  <PropertyGroup>
    <!--
    To specify a different registry root to register your package, uncomment the TargetRegistryRoot
    tag and specify a registry root in it.
    <TargetRegistryRoot></TargetRegistryRoot>
    -->
    <RegisterWithCodebase Condition="'$(RegisterWithCodebase)' == ''">true</RegisterWithCodebase>
  </PropertyGroup>

  <!--
  Inside Visual Studio, we want to deploy to the experimental hive when
  building for ease of debugging.
  -->
  <PropertyGroup Condition="'$(BuildingInsideVisualStudio)' == 'true'">
    <DeployExtension Condition="'$(DeployExtension)' == ''">true</DeployExtension>
    <DeployVSTemplates Condition="'$(DeployVSTemplates)' == ''">false</DeployVSTemplates>
    <CreateVsixContainer Condition="'$(CreateVsixContainer)' == ''">false</CreateVsixContainer>
    <CopyVsixManifestToOutput Condition="'$(CopyVsixManifestToOutput)' == ''">true</CopyVsixManifestToOutput>
    <RegisterOutputPackage Condition="'$(RegisterOutputPackage)' == ''">true</RegisterOutputPackage>
  </PropertyGroup>
  
  <!--
  Outside of Visual Studio, we want to create VSIX containers rather than
  deploying to the experimental hive.
  -->
  <PropertyGroup Condition="'$(BuildingInsideVisualStudio)' != 'true'">
    <DeployExtension Condition="'$(DeployExtension)' == ''">false</DeployExtension>
    <DeployVSTemplates Condition="'$(DeployVSTemplates)' == ''">false</DeployVSTemplates>
    <CreateVsixContainer Condition="'$(CreateVsixContainer)' == ''">false</CreateVsixContainer>
    <CopyVsixManifestToOutput Condition="'$(CopyVsixManifestToOutput)' == ''">true</CopyVsixManifestToOutput>
    <RegisterOutputPackage Condition="'$(RegisterOutputPackage)' == ''">false</RegisterOutputPackage>
  </PropertyGroup>

  <!--
  If a VSIX is being created, we want to copy its contents to a location
  where it can be signed and zipped.
  -->
  <PropertyGroup Condition="$(CreateVsixContainer)">
    <CopyVsixExtensionFiles Condition="'$(CopyVsixExtensionFiles)' == ''">true</CopyVsixExtensionFiles>
    <CopyVsixExtensionLocation>$(CopyVsixExtensionRoot)$(TargetName)\</CopyVsixExtensionLocation>
    <TargetVsixContainerName Condition="'$(TargetVsixContainerName)'==''">$(TargetName).vsix</TargetVsixContainerName>
    <TargetVsixContainer Condition="'$(TargetVsixContainer)'==''">$(BuildOutputRoot)setup\$(TargetVsixContainerName)</TargetVsixContainer>
  </PropertyGroup>

  <Target Name="_CreateVsixContainerPath" Condition="$(CreateVsixContainer) and !Exists('$(BuildOutputRoot)setup')" BeforeTargets="PrepareForBuild">
    <MakeDir Directories="$(BuildOutputRoot)setup" ContinueOnError="true" />
  </Target>

  <!-- Import the normal VS SDK headers -->
  <Import Project="$(VSToolsPath)\VSSDK\Microsoft.VsSDK.targets" />

  <!-- For non-debug builds, don't copy debug symbols -->
  <Target Name="_ClearVSIXSourceItemLocalOnly"
          BeforeTargets="CopyVsixExtensionFiles"
          Condition="$(CreateVsixContainer) and $(Configuration) != 'Debug'">
    <ItemGroup>
      <_VSIXSourceItemLocalOnly Include="@(VSIXSourceItemLocalOnly)" />
      <VSIXSourceItemLocalOnly Remove="@(VSIXSourceItemLocalOnly)" />
    </ItemGroup>
  </Target>

  <Target Name="_RestoreVSIXSourceItemLocalOnly"
          AfterTargets="CopyVsixExtensionFiles"
          Condition="$(CreateVsixContainer) and $(Configuration) != 'Debug'">
    <ItemGroup>
      <VSIXSourceItemLocalOnly Include="@(_VSIXSourceItemLocalOnly)" />
      <_VSIXSourceItemLocalOnly Remove="@(_VSIXSourceItemLocalOnly)" />
    </ItemGroup>
  </Target>
  
  <!--
  Our GetVSIXSourceItems does not trigger vsixmanifest generation, so update
  the target dependencies to bypass it.
  -->
  <PropertyGroup>
    <ValidateVsixPartsDependsOn>DetokenizeVsixManifestFile;$(ValidateVsixPartsDependsOn)</ValidateVsixPartsDependsOn>
  </PropertyGroup>

  <!-- Provide a target to include templates -->
  <Target Name="BuiltVsixTemplateItems"
          DependsOnTargets="ZipProjects;ZipItems"
          Returns="@(TemplateZip)">
    <ItemGroup>
      <TemplateZip Include="@(IntermediateZipItem)">
        <TemplateSubPath>ItemTemplates\%(IntermediateZipItem.Language)\%(IntermediateZipItem.OutputSubPath)\%(IntermediateZipItem.Culture)</TemplateSubPath>
      </TemplateZip>
      <TemplateZip Include="@(IntermediateZipProject)">
        <TemplateSubPath>ProjectTemplates\%(IntermediateZipProject.Language)\%(IntermediateZipProject.OutputSubPath)\%(IntermediateZipProject.Culture)</TemplateSubPath>
      </TemplateZip>
    </ItemGroup>
  </Target>

  <PropertyGroup>
    <IncludeVSIXItemsFromTargets Condition="!$(UseVSSDKTemplateOnly)">$(IncludeVSIXItemsFromTargets);BuiltVsixTemplateItems</IncludeVSIXItemsFromTargets>
  </PropertyGroup>


  <!-- Copy built templates to the project's output directory -->
  <Target Name="CopyTemplatesToOutput"
          DependsOnTargets="BuiltVsixTemplateItems"
          Inputs="@(TemplateZip)"
          Outputs="@(TemplateZip->'$(OutputPath)%(TemplateSubPath)\%(Filename)%(Extension)')"
          AfterTargets="CopyFilesToOutputDirectory">
    <Copy SourceFiles="@(TemplateZip)"
          DestinationFiles="@(TemplateZip->'$(OutputPath)%(TemplateSubPath)\%(Filename)%(Extension)')"
          SkipUnchangedFiles="true">
      <Output TaskParameter="CopiedFiles" ItemName="FileWrites"/>
    </Copy>
  </Target>
  
  <!-- Copy extension files to the project's output directory -->
  <Target Name="CopyVSSDKFilesToOutput"
          DependsOnTargets="CopyVsixManifestFile;CopyPkgDef"
          BeforeTargets="AfterBuild" />
  
  <!--
  Copies the VS-specific theme file to the output directory.
  
  Themes should be stored in a Theme directory of the project and be named
  matching the output assembly and the target VS version, for example:
      Microsoft.PythonTools.theme.v12.0.pkgdef
  -->
  <ItemGroup>
    <_ThemePkgDef Include="Theme\**\*.theme.v$(VSTarget).pkgdef">
      <IntermediateFile>$(IntermediateOutputPath)$([System.String]::New(`%(Identity)`).Replace(`.v$(VSTarget)`, ``))</IntermediateFile>
    </_ThemePkgDef>
  </ItemGroup>

  <Target Name="_IncludeThemePkgdef" BeforeTargets="PrepareForBuild" Inputs="@(_ThemePkgDef)" Outputs="@(_ThemePkgDef->'%(IntermediateFile)')">
    <Copy SourceFiles="@(_ThemePkgDef)"
          DestinationFiles="@(_ThemePkgDef->'%(IntermediateFile)')">
        <Output TaskParameter="CopiedFiles" ItemName="_CopiedThemePkgDef" />
        <Output TaskParameter="CopiedFiles" ItemName="FileWrites" />
    </Copy>
    <ItemGroup>
      <Content Include="@(_ThemePkgDef->'%(IntermediateFile)')">
        <IncludeInVsix>true</IncludeInVsix>
        <VSIXSubPath>.</VSIXSubPath>
        <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
      </Content>
    </ItemGroup>
  </Target>


  <!--
  Zip folders containing VSIX files. These folders must have been created
  by previously having built the project.
  -->
  <Target Name="_GetRezipVSIXFiles" Condition="$([msbuild]::ValueOrDefault($(RezipVSIXFiles), `false`))">
    <ItemGroup>
      <VSIX Include="$(CopyVsixExtensionRoot)*\extension.vsixmanifest" />
      <VSIX>
        <SourceDir>%(VSIX.RootDir)%(VSIX.Directory)</SourceDir>
        <Container>$(BuildOutputRoot)setup\$([System.IO.Path]::GetFileName($([System.String]::new(%(VSIX.Directory)).TrimEnd(`\`)))).vsix</Container>
      </VSIX>
      
      <FilesToSign Include="@(VSIX->'%(Container)')" Condition="$([msbuild]::ValueOrDefault($(SignRezippedVSIXFiles), `false`))">
        <Authenticode>vsix</Authenticode>
      </FilesToSign>
    </ItemGroup>
  </Target>
  
  <Target Name="_GetBinariesInLayout" DependsOnTargets="_GetRezipVSIXFiles" Condition="$([msbuild]::ValueOrDefault($(SignRezippedVSIXFiles), `false`))">
    <ItemGroup>
      <_BinariesInLayout Include="%(VSIX.SourceDir)**\*.exe;%(VSIX.SourceDir)**\*.dll" Condition="Exists('$(BuildOutputRoot)binaries\%(Filename)%(Extension)')">
        <SignedPath>$(BuildOutputRoot)binaries\%(Filename)%(Extension)</SignedPath>
      </_BinariesInLayout>
    </ItemGroup>
  </Target>
  
  <Target Name="_UpdateLayoutWithSignedBinaries" DependsOnTargets="_GetBinariesInLayout" Inputs="@(_BinariesInLayout->'%(SignedPath)')" Outputs="@(_BinariesInLayout)">
    <Message Text="Updating %(VSIX.SourceDir) from $(BuildOutputRoot)binaries" />
    <Copy SourceFiles="@(_BinariesInLayout->'%(SignedPath)')" DestinationFiles="@(_BinariesInLayout)" />
  </Target>

  <Target Name="_RezipSingleVSIX_Dev12_14" DependsOnTargets="_GetRezipVSIXFiles;_UpdateLayoutWithSignedBinaries" BeforeTargets="Build" Inputs="@(VSIX)" Outputs="%(VSIX.Container)" Condition="'$(VSTarget)' == '12.0' or '$(VSTarget)' == '14.0'">
    <Message Text="Rezipping %(VSIX.SourceDir) to %(VSIX.Container)" Importance="high" />
    
    <ItemGroup>
      <_VSIXSourceItems Include="%(VSIX.SourceDir)**\*" />
      <_VSIXSourceItems>
        <TargetPath>%(RecursiveDir)%(Filename)%(Extension)</TargetPath>
      </_VSIXSourceItems>
    </ItemGroup>
    
    <PropertyGroup>
      <_Container>%(VSIX.Container)</_Container>
    </PropertyGroup>

    <CreateZipPackage Files="@(_VSIXSourceItems)" ZipPackage="$(_Container)" CompressionLevel="$(ZipPackageCompressionLevel)">
      <Output TaskParameter="ZipPackage" ItemName="FileWrites" />
    </CreateZipPackage>
  </Target>

  <Target Name="_RezipSingleVSIX_Dev10_11" DependsOnTargets="_GetRezipVSIXFiles;_UpdateLayoutWithSignedBinaries" BeforeTargets="Build" Inputs="@(VSIX)" Outputs="%(VSIX.Container)" Condition="'$(VSTarget)' == '10.0' or '$(VSTarget)' == '11.0'">
    <Message Text="Rezipping %(VSIX.SourceDir)" Importance="high" />
    
    <ItemGroup>
      <_VSIXSourceItems Include="%(VSIX.SourceDir)**\*" />
      <_VSIXSourceItems>
        <TargetPath>%(RecursiveDir)%(Filename)%(Extension)</TargetPath>
      </_VSIXSourceItems>
    </ItemGroup>
{'fraction_non_alphanumeric': 0.14861634641904936, 'fraction_numerical': 0.002482302105359934, 'mean_word_length': 5.370424597364568, 'pattern_counts': {'":': 0, '<': 377, '<?xml version=': 0, '>': 393, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 2}, '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': '4100070', 'n_tokens_mistral': 6798, 'n_tokens_neox': 6307, 'n_words': 1040}