parent
							
								
									3d01d60374
								
							
						
					
					
						commit
						4dd571b3d2
					
				
											
												Binary file not shown.
											
										
									
								@ -1,61 +0,0 @@
 | 
				
			||||
{
 | 
				
			||||
 "cells": [
 | 
				
			||||
  {
 | 
				
			||||
   "cell_type": "code",
 | 
				
			||||
   "execution_count": 4,
 | 
				
			||||
   "metadata": {},
 | 
				
			||||
   "outputs": [
 | 
				
			||||
    {
 | 
				
			||||
     "name": "stdout",
 | 
				
			||||
     "output_type": "stream",
 | 
				
			||||
     "text": [
 | 
				
			||||
      "0, 1\n",
 | 
				
			||||
      "1, 1\n",
 | 
				
			||||
      "1, 2\n",
 | 
				
			||||
      "1, 2\n"
 | 
				
			||||
     ]
 | 
				
			||||
    }
 | 
				
			||||
   ],
 | 
				
			||||
   "source": [
 | 
				
			||||
    "class A:\n",
 | 
				
			||||
    "    def s(self, *_):\n",
 | 
				
			||||
    "        print(\"A\")\n",
 | 
				
			||||
    "\n",
 | 
				
			||||
    "class B(A):\n",
 | 
				
			||||
    "    def s(self, a, b = 1, *_):\n",
 | 
				
			||||
    "        print(f'{a}, {b}')\n",
 | 
				
			||||
    "\n",
 | 
				
			||||
    "t = B()\n",
 | 
				
			||||
    "t.s(0)\n",
 | 
				
			||||
    "t.s(1)\n",
 | 
				
			||||
    "t.s(1,2)\n",
 | 
				
			||||
    "t.s(1,2,3)"
 | 
				
			||||
   ]
 | 
				
			||||
  }
 | 
				
			||||
 ],
 | 
				
			||||
 "metadata": {
 | 
				
			||||
  "interpreter": {
 | 
				
			||||
   "hash": "31f2aee4e71d21fbe5cf8b01ff0e069b9275f58929596ceb00d14d90e3e16cd6"
 | 
				
			||||
  },
 | 
				
			||||
  "kernelspec": {
 | 
				
			||||
   "display_name": "Python 3.10.2 64-bit",
 | 
				
			||||
   "language": "python",
 | 
				
			||||
   "name": "python3"
 | 
				
			||||
  },
 | 
				
			||||
  "language_info": {
 | 
				
			||||
   "codemirror_mode": {
 | 
				
			||||
    "name": "ipython",
 | 
				
			||||
    "version": 3
 | 
				
			||||
   },
 | 
				
			||||
   "file_extension": ".py",
 | 
				
			||||
   "mimetype": "text/x-python",
 | 
				
			||||
   "name": "python",
 | 
				
			||||
   "nbconvert_exporter": "python",
 | 
				
			||||
   "pygments_lexer": "ipython3",
 | 
				
			||||
   "version": "3.10.2"
 | 
				
			||||
  },
 | 
				
			||||
  "orig_nbformat": 4
 | 
				
			||||
 },
 | 
				
			||||
 "nbformat": 4,
 | 
				
			||||
 "nbformat_minor": 2
 | 
				
			||||
}
 | 
				
			||||
											
												Binary file not shown.
											
										
									
								
											
												Binary file not shown.
											
										
									
								@ -1,21 +0,0 @@
 | 
				
			||||
    MIT License
 | 
				
			||||
 | 
				
			||||
    Copyright (c) Microsoft Corporation.
 | 
				
			||||
 | 
				
			||||
    Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
				
			||||
    of this software and associated documentation files (the "Software"), to deal
 | 
				
			||||
    in the Software without restriction, including without limitation the rights
 | 
				
			||||
    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 | 
				
			||||
    copies of the Software, and to permit persons to whom the Software is
 | 
				
			||||
    furnished to do so, subject to the following conditions:
 | 
				
			||||
 | 
				
			||||
    The above copyright notice and this permission notice shall be included in all
 | 
				
			||||
    copies or substantial portions of the Software.
 | 
				
			||||
 | 
				
			||||
    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 | 
				
			||||
    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 | 
				
			||||
    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 | 
				
			||||
    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 | 
				
			||||
    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 | 
				
			||||
    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
 | 
				
			||||
    SOFTWARE
 | 
				
			||||
											
												Binary file not shown.
											
										
									
								
											
												Binary file not shown.
											
										
									
								@ -1,66 +0,0 @@
 | 
				
			||||
<!--
 | 
				
			||||
***********************************************************************************************
 | 
				
			||||
Copyright (C) Microsoft Corporation. All rights reserved.
 | 
				
			||||
***********************************************************************************************
 | 
				
			||||
-->
 | 
				
			||||
<!--Set compiler and linker options for projects requiring C++/WinRT. -->
 | 
				
			||||
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
 | 
				
			||||
 | 
				
			||||
    <PropertyGroup>
 | 
				
			||||
        <!-- Only do this for MSBuild versions below 16.0
 | 
				
			||||
             as it is since done automatically, see https://github.com/microsoft/msbuild/pull/3605-->
 | 
				
			||||
        <MSBuildAllProjects Condition="'$(MSBuildToolsVersion)'  <= '15'">$(MSBuildAllProjects);$(MSBuildThisFileFullPath)</MSBuildAllProjects>
 | 
				
			||||
    </PropertyGroup>
 | 
				
			||||
 | 
				
			||||
    <PropertyGroup>
 | 
				
			||||
        <PreferredToolArchitecture>x64</PreferredToolArchitecture>
 | 
				
			||||
        <CanReferenceWinRT>true</CanReferenceWinRT>
 | 
				
			||||
        <CppWinRTPackage Condition="'$(CppWinRTEnabled)' != 'true'">true</CppWinRTPackage>
 | 
				
			||||
        <CppWinRTPackage Condition="'$(CppWinRTPackage)' != 'true'">false</CppWinRTPackage>
 | 
				
			||||
        <XamlLanguage Condition="'$(XamlLanguage)' == ''">CppWinRT</XamlLanguage>
 | 
				
			||||
        <IsNativeLanguage>true</IsNativeLanguage>
 | 
				
			||||
        <!-- This causes VS to add the platform WinMD references for the target SDK -->
 | 
				
			||||
        <WinMDAssembly>true</WinMDAssembly>
 | 
				
			||||
        <!--Set a value to prevent SDK's uap.props from setting it and pointing to the wrong headers-->
 | 
				
			||||
        <CppWinRT_IncludePath>PreventSdkUapPropsAssignment</CppWinRT_IncludePath>
 | 
				
			||||
        <CppWinRTEnableDefaultCopyLocalFalse Condition="'$(CppWinRTEnableDefaultCopyLocalFalse)' == ''">true</CppWinRTEnableDefaultCopyLocalFalse>
 | 
				
			||||
    </PropertyGroup>
 | 
				
			||||
 | 
				
			||||
    <ItemDefinitionGroup>
 | 
				
			||||
        <ClCompile>
 | 
				
			||||
            <CompileAsWinRT Condition="'$(CppWinRTProjectLanguage)' != 'C++/CX' And '%(ClCompile.CompileAsWinRT)' == ''">false</CompileAsWinRT>
 | 
				
			||||
            <LanguageStandard Condition="'%(ClCompile.LanguageStandard)' == ''">stdcpp17</LanguageStandard>
 | 
				
			||||
        </ClCompile>
 | 
				
			||||
        <Midl Condition="'$(CppWinRTModernIDL)' != 'false'">
 | 
				
			||||
            <EnableWindowsRuntime>true</EnableWindowsRuntime>
 | 
				
			||||
            <MetadataFileName>$(IntDir)Unmerged\%(Filename).winmd</MetadataFileName>
 | 
				
			||||
            <GenerateClientFiles Condition="'%(Midl.GenerateClientFiles)'==''">None</GenerateClientFiles>
 | 
				
			||||
            <GenerateServerFiles Condition="'%(Midl.GenerateServerFiles)'==''">None</GenerateServerFiles>
 | 
				
			||||
            <GenerateStublessProxies Condition="'%(Midl.GenerateStublessProxies)'==''">false</GenerateStublessProxies>
 | 
				
			||||
            <GenerateTypeLibrary Condition="'%(Midl.GenerateTypeLibrary)'==''">false</GenerateTypeLibrary>
 | 
				
			||||
            <HeaderFileName Condition="'%(Midl.HeaderFileName)'==''">nul</HeaderFileName>
 | 
				
			||||
            <DllDataFileName Condition="'%(Midl.DllDataFileName)'==''">nul</DllDataFileName>
 | 
				
			||||
            <InterfaceIdentifierFileName Condition="'%(Midl.InterfaceIdentifierFileName)'==''">nul</InterfaceIdentifierFileName>
 | 
				
			||||
            <ProxyFileName Condition="'%(Midl.ProxyFileName)'==''">nul</ProxyFileName>
 | 
				
			||||
            <TypeLibraryName Condition="'%(Midl.TypeLibraryName)'==''"></TypeLibraryName>
 | 
				
			||||
        </Midl>
 | 
				
			||||
        <ProjectReference Condition="'$(XamlLanguage)' != 'C++' and '$(CppWinRTEnableDefaultCopyLocalFalse)' == 'true'">
 | 
				
			||||
            <!-- By default, for a C++/WinRT project,
 | 
				
			||||
                 don't copy project reference output to the output directory
 | 
				
			||||
                 of the current project for projects that are not an exe. -->
 | 
				
			||||
            <Private Condition="'$(ConfigurationType)' != 'Application' and '$(OutputType)'!='winexe' and '$(OutputType)'!='exe' and '$(OutputType)'!='appcontainerexe'">false</Private>
 | 
				
			||||
        </ProjectReference>
 | 
				
			||||
        <Reference Condition="'$(XamlLanguage)' != 'C++' and '$(CppWinRTEnableDefaultCopyLocalFalse)' == 'true'">
 | 
				
			||||
            <!-- By default, for a C++/WinRT project,
 | 
				
			||||
                 don't copy reference output to the output directory
 | 
				
			||||
                 of the current project for projects that are not an exe. -->
 | 
				
			||||
            <Private Condition="'$(ConfigurationType)' != 'Application' and '$(OutputType)'!='winexe' and '$(OutputType)'!='exe' and '$(OutputType)'!='appcontainerexe'">false</Private>
 | 
				
			||||
        </Reference>
 | 
				
			||||
    </ItemDefinitionGroup>
 | 
				
			||||
 | 
				
			||||
    <ItemGroup>
 | 
				
			||||
        <PropertyPageSchema Include="$(MSBuildThisFileDirectory)\CppWinrtRules.Project.xml"/>
 | 
				
			||||
        <ProjectCapability Include="CppWinRT" />
 | 
				
			||||
    </ItemGroup>
 | 
				
			||||
 | 
				
			||||
</Project>
 | 
				
			||||
@ -1,888 +0,0 @@
 | 
				
			||||
<!--
 | 
				
			||||
***********************************************************************************************
 | 
				
			||||
Copyright (C) Microsoft Corporation. All rights reserved.
 | 
				
			||||
***********************************************************************************************
 | 
				
			||||
-->
 | 
				
			||||
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
 | 
				
			||||
 | 
				
			||||
    <PropertyGroup>
 | 
				
			||||
        <!-- Only do this for MSBuild versions below 16.0
 | 
				
			||||
             as it is since done automatically, see https://github.com/microsoft/msbuild/pull/3605-->
 | 
				
			||||
        <MSBuildAllProjects Condition="'$(MSBuildToolsVersion)'  <= '15'">$(MSBuildAllProjects);$(MSBuildThisFileFullPath)</MSBuildAllProjects>
 | 
				
			||||
    </PropertyGroup>
 | 
				
			||||
 | 
				
			||||
    <PropertyGroup>
 | 
				
			||||
        <CppWinRTVerbosity Condition="'$(CppWinRTVerbosity)' == ''">normal</CppWinRTVerbosity>
 | 
				
			||||
        <CppWinRTCommandVerbosity Condition="'$(CppWinRTVerbosity)' == 'high'">-verbose</CppWinRTCommandVerbosity>
 | 
				
			||||
        <CppWinRTProjectWinMD>$(OutDir)$(RootNamespace).winmd</CppWinRTProjectWinMD>
 | 
				
			||||
        <CppWinRTMergedDir>$(IntDir)Merged\</CppWinRTMergedDir>
 | 
				
			||||
        <CppWinRTUnmergedDir>$(IntDir)Unmerged\</CppWinRTUnmergedDir>
 | 
				
			||||
        <CppWinRTSkipUnchangedFiles Condition="'$(CppWinRTSkipUnchangedFiles)' == ''">true</CppWinRTSkipUnchangedFiles>
 | 
				
			||||
        <CppWinRTUseHardlinksIfPossible Condition="'$(CppWinRTUseHardlinksIfPossible)' == ''">false</CppWinRTUseHardlinksIfPossible>
 | 
				
			||||
        <CppWinRTWriteOnlyWhenDifferent Condition="('$(CppWinRTWriteOnlyWhenDifferent)' == '') And (('$(MSBuildToolsVersion)' == 'Current') Or ('$(MSBuildToolsVersion)' >= '15'))">true</CppWinRTWriteOnlyWhenDifferent>
 | 
				
			||||
        <CppWinRTWriteOnlyWhenDifferent Condition="'$(CppWinRTWriteOnlyWhenDifferent)' != 'true'">false</CppWinRTWriteOnlyWhenDifferent>
 | 
				
			||||
        <CppWinRTHasHashTask Condition="('$(CppWinRTHasHashTask)' == '') And (('$(MSBuildToolsVersion)' == 'Current'))">true</CppWinRTHasHashTask>
 | 
				
			||||
        <CppWinRTHasHashTask Condition="'$(CppWinRTHasHashTask)' != 'true'">false</CppWinRTHasHashTask>
 | 
				
			||||
        <CppWinRTPackageDir Condition="'$(CppWinRTPackage)' == 'true' and '$(CppWinRTPackageDir)'==''">$([System.IO.Path]::GetFullPath($(MSBuildThisFileDirectory)))..\..\</CppWinRTPackageDir>
 | 
				
			||||
        <CppWinRTPackageDir Condition="'$(CppWinRTPackage)' != 'true' and '$(CppWinRTPackageDir)'==''">$([System.IO.Path]::GetFullPath($(MSBuildThisFileDirectory)))</CppWinRTPackageDir>
 | 
				
			||||
        <CppWinRTParameters Condition="'$(CppWinRTFastAbi)'=='true'">$(CppWinRTParameters) -fastabi</CppWinRTParameters>
 | 
				
			||||
        <CppWinRTPath Condition="'$(CppWinRTPackage)' == 'true' and '$(CppWinRTPath)'==''">"$(CppWinRTPackageDir)bin\"</CppWinRTPath>
 | 
				
			||||
        <CppWinRTPath Condition="'$(CppWinRTPackage)' != 'true' and '$(CppWinRTPath)'==''">"$(CppWinRTPackageDir)"</CppWinRTPath>
 | 
				
			||||
        <!-- By default enable C++/WinRT to include target platform winmds if we didn't overide sdk references and the C++ Project system isn't already adding them -->
 | 
				
			||||
        <!-- _PrepareForReferenceResolution adds the references if TargetPlatformIdentifier is UAP -->
 | 
				
			||||
        <CppWinRTImplicitlyExpandTargetPlatform Condition="'$(CppWinRTImplicitlyExpandTargetPlatform)' == '' and '$(CppWinRTOverrideSDKReferences)' != 'true' and '$(TargetPlatformIdentifier)' != 'UAP'">true</CppWinRTImplicitlyExpandTargetPlatform>
 | 
				
			||||
        <XamlLanguage Condition="'$(CppWinRTProjectLanguage)' == 'C++/CX'">C++</XamlLanguage>
 | 
				
			||||
        <XamlNamespace Condition="'$(XamlNamespace)' == ''">Windows.UI.Xaml</XamlNamespace>
 | 
				
			||||
        <XamlMetaDataProviderIdl Condition="'$(XamlMetaDataProviderIdl)'== ''">$(GeneratedFilesDir)XamlMetaDataProvider.idl</XamlMetaDataProviderIdl>
 | 
				
			||||
        <XamlMetaDataProviderCpp Condition="'$(XamlMetaDataProviderCpp)'== ''">$(GeneratedFilesDir)XamlMetaDataProvider.cpp</XamlMetaDataProviderCpp>
 | 
				
			||||
 | 
				
			||||
        <CppWinRTMdMergeResponseFile Condition="'$(CppWinRTMdMergeResponseFile)'==''">$(IntDir)$(MSBuildProjectFile).mdmerge.rsp</CppWinRTMdMergeResponseFile>
 | 
				
			||||
        <CppWinRTMidlResponseFile Condition="'$(CppWinRTMidlResponseFile)'==''">$(IntDir)$(MSBuildProjectFile).midlrt.rsp</CppWinRTMidlResponseFile>
 | 
				
			||||
        <CppWinRTPlatformProjectionResponseFile Condition="'$(CppWinRTPlatformProjectionResponseFile)'==''">$(IntDir)$(MSBuildProjectFile).cppwinrt_plat.rsp</CppWinRTPlatformProjectionResponseFile>
 | 
				
			||||
        <CppWinRTReferenceProjectionResponseFile Condition="'$(CppWinRTReferenceProjectionResponseFile)'==''">$(IntDir)$(MSBuildProjectFile).cppwinrt_ref.rsp</CppWinRTReferenceProjectionResponseFile>
 | 
				
			||||
        <CppWinRTComponentProjectionResponseFile Condition="'$(CppWinRTComponentProjectionResponseFile)'==''">$(IntDir)$(MSBuildProjectFile).cppwinrt_comp.rsp</CppWinRTComponentProjectionResponseFile>
 | 
				
			||||
 | 
				
			||||
        <!-- For CX projects, CppWinRT will never output a winmd-->
 | 
				
			||||
        <!-- NOTE: We don't set a default here as the default requires evaluation of project references
 | 
				
			||||
             and this is done by the CppWinRTComputeGenerateWindowsMetadata target. -->
 | 
				
			||||
        <CppWinRTGenerateWindowsMetadata Condition="'$(CppWinRTGenerateWindowsMetadata)' == '' AND '$(XamlLanguage)' == 'C++' ">false</CppWinRTGenerateWindowsMetadata>
 | 
				
			||||
        <!-- For CX projects, turn off the component projection generation-->
 | 
				
			||||
        <CppWinRTEnableComponentProjection Condition="'$(CppWinRTEnableComponentProjection)' == '' AND '$(XamlLanguage)' == 'C++' ">false</CppWinRTEnableComponentProjection>
 | 
				
			||||
        <CppWinRTEnableComponentProjection Condition="'$(CppWinRTEnableComponentProjection)' == ''">true</CppWinRTEnableComponentProjection>
 | 
				
			||||
        <CppWinRTEnablePlatformProjection Condition="'$(CppWinRTEnablePlatformProjection)' == ''">true</CppWinRTEnablePlatformProjection>
 | 
				
			||||
        <CppWinRTEnableReferenceProjection Condition="'$(CppWinRTEnableReferenceProjection)' == ''">true</CppWinRTEnableReferenceProjection>
 | 
				
			||||
 | 
				
			||||
        <GeneratedFilesDir Condition="'$(GeneratedFilesDir)' == ''">$(IntDir)Generated Files\</GeneratedFilesDir>
 | 
				
			||||
        <!--Override SDK's uap.props setting to ensure version-matched headers-->
 | 
				
			||||
        <CppWinRT_IncludePath>$(GeneratedFilesDir)</CppWinRT_IncludePath>
 | 
				
			||||
        <!--TEMP: Override NuGet SDK's erroneous setting in uap.props -->
 | 
				
			||||
        <WindowsSDK_MetadataFoundationPath Condition="('$(WindowsSDK_MetadataFoundationPath)'!='') And !Exists($(WindowsSDK_MetadataFoundationPath))">$(WindowsSDK_MetadataPathVersioned)</WindowsSDK_MetadataFoundationPath>
 | 
				
			||||
        <!-- CAExcludePath is used to set an environment variable, so make sure this is defined on a single line. -->
 | 
				
			||||
        <CAExcludePath>$(GeneratedFilesDir);$(CAExcludePath)</CAExcludePath>
 | 
				
			||||
 | 
				
			||||
        <PrepareForBuildDependsOn>
 | 
				
			||||
            $(PrepareForBuildDependsOn);
 | 
				
			||||
            CppWinRTVerifyKitVersion;
 | 
				
			||||
        </PrepareForBuildDependsOn>
 | 
				
			||||
        <!-- Note: Before* targets run before Compute* targets. -->
 | 
				
			||||
        <BeforeMidlCompileTargets>
 | 
				
			||||
            $(BeforeMidlCompileTargets);CppWinRTAddXamlMetaDataProviderIdl;
 | 
				
			||||
        </BeforeMidlCompileTargets>
 | 
				
			||||
        <ComputeMidlInputsTargets>
 | 
				
			||||
            $(ComputeMidlInputsTargets);CppWinRTComputeXamlGeneratedMidlInputs;CppWinRTSetMidlReferences;
 | 
				
			||||
        </ComputeMidlInputsTargets>
 | 
				
			||||
        <AfterMidlTargets>
 | 
				
			||||
            $(AfterMidlTargets);
 | 
				
			||||
            GetCppWinRTMdMergeInputs;
 | 
				
			||||
            CppWinRTMergeProjectWinMDInputs;
 | 
				
			||||
            CppWinRTGetResolvedWinMD;
 | 
				
			||||
            CppWinRTCopyWinMDToOutputDirectory;
 | 
				
			||||
        </AfterMidlTargets>
 | 
				
			||||
        <ResolveReferencesDependsOn>
 | 
				
			||||
            $(ResolveReferencesDependsOn);
 | 
				
			||||
            CppWinRTImplicitlyExpandTargetPlatform
 | 
				
			||||
        </ResolveReferencesDependsOn>
 | 
				
			||||
        <ResolveAssemblyReferencesDependsOn>
 | 
				
			||||
            $(ResolveAssemblyReferencesDependsOn);GetCppWinRTProjectWinMDReferences;CppWinRTMarkStaticLibrariesPrivate;
 | 
				
			||||
        </ResolveAssemblyReferencesDependsOn>
 | 
				
			||||
        <!-- Note: Before* targets run before Compute* targets. -->
 | 
				
			||||
        <BeforeClCompileTargets>
 | 
				
			||||
            $(BeforeClCompileTargets);CppWinRTAddXamlMetaDataProviderCpp;CppWinRTMakeProjections;
 | 
				
			||||
        </BeforeClCompileTargets>
 | 
				
			||||
 | 
				
			||||
        <!-- Ensure ComputeCompileInputsTargets runs at the end so that FixupCLCompileOptions is the last to run -->
 | 
				
			||||
        <ComputeCompileInputsTargets>
 | 
				
			||||
            CppWinRTComputeXamlGeneratedCompileInputs;$(ComputeCompileInputsTargets);CppWinRTHeapEnforcementOptOut;
 | 
				
			||||
        </ComputeCompileInputsTargets>
 | 
				
			||||
 | 
				
			||||
        <MarkupCompilePass1DependsOn>
 | 
				
			||||
            $(MarkupCompilePass1DependsOn);CppWinRTAddXamlReferences
 | 
				
			||||
        </MarkupCompilePass1DependsOn>
 | 
				
			||||
        <MarkupCompilePass2DependsOn>
 | 
				
			||||
            $(MarkupCompilePass2DependsOn);CppWinRTSetXamlLocalAssembly
 | 
				
			||||
        </MarkupCompilePass2DependsOn>
 | 
				
			||||
        <CleanDependsOn>
 | 
				
			||||
            $(CleanDependsOn);CppWinRTClean
 | 
				
			||||
        </CleanDependsOn>
 | 
				
			||||
        <GetTargetPathDependsOn>
 | 
				
			||||
            $(GetTargetPathDependsOn);CppWinRTGetResolvedWinMD
 | 
				
			||||
        </GetTargetPathDependsOn>
 | 
				
			||||
        <GetPackagingOutputsDependsOn>
 | 
				
			||||
            $(GetPackagingOutputsDependsOn);CppWinRTGetResolvedWinMD
 | 
				
			||||
        </GetPackagingOutputsDependsOn>
 | 
				
			||||
 | 
				
			||||
    </PropertyGroup>
 | 
				
			||||
 | 
				
			||||
    <!-- For a static library we don't want the winmd/lib/pdb to be packaged -->
 | 
				
			||||
    <PropertyGroup Condition="'$(ConfigurationType)' == 'StaticLibrary'">
 | 
				
			||||
        <IncludeCopyWinMDArtifactsOutputGroup>false</IncludeCopyWinMDArtifactsOutputGroup>
 | 
				
			||||
    </PropertyGroup>
 | 
				
			||||
 | 
				
			||||
    <Target Name="CppWinRTVerifyKitVersion" Condition="'$(CppWinRTOverrideSDKReferences)' != 'true'">
 | 
				
			||||
        <PropertyGroup>
 | 
				
			||||
            <_CppWinRT_RS4OrGreater>false</_CppWinRT_RS4OrGreater>
 | 
				
			||||
            <_CppWinRT_RS4OrGreater Condition="'$(TargetPlatformVersion)' >= '10.0.17134.0'">true</_CppWinRT_RS4OrGreater>
 | 
				
			||||
        </PropertyGroup>
 | 
				
			||||
        <VCMessage Code="MSB8036" Type="Error" Arguments="10.0.17134.0 (or later)" Condition="$(_CppWinRT_RS4OrGreater) != 'true'" />
 | 
				
			||||
    </Target>
 | 
				
			||||
 | 
				
			||||
    <Target Name="CppWinRTClean">
 | 
				
			||||
        <ItemGroup>
 | 
				
			||||
            <_FilesToDelete Remove="@(_FilesToDelete)"/>
 | 
				
			||||
            <_FilesToDelete Include="$(GeneratedFilesDir)**"/>
 | 
				
			||||
            <_FilesToDelete Include="$(CppWinRTMergedDir)**"/>
 | 
				
			||||
            <_FilesToDelete Include="$(CppWinRTUnmergedDir)**"/>
 | 
				
			||||
            <_FilesToDelete Include="$(CppWinRTProjectWinMD)"/>
 | 
				
			||||
        </ItemGroup>
 | 
				
			||||
        <Delete Files="@(_FilesToDelete)"/>
 | 
				
			||||
    </Target>
 | 
				
			||||
 | 
				
			||||
    <Target Name="CppWinRTHeapEnforcementOptOut" Condition="'@(ClCompile)' != ''">
 | 
				
			||||
        <ItemGroup Condition="'$(CppWinRTHeapEnforcement)'=='' and ('@(Page)' != '' Or '@(ApplicationDefinition)' != '')">
 | 
				
			||||
            <ClCompile>
 | 
				
			||||
                <AdditionalOptions>%(ClCompile.AdditionalOptions) /DWINRT_NO_MAKE_DETECTION</AdditionalOptions>
 | 
				
			||||
            </ClCompile>
 | 
				
			||||
        </ItemGroup>
 | 
				
			||||
    </Target>
 | 
				
			||||
 | 
				
			||||
    <!--
 | 
				
			||||
      The CppWinRTImplicitlyExpandTargetPlatform target will find the 
 | 
				
			||||
      appropriate platform in the requested SDK, gather the 
 | 
				
			||||
      list of references for that platform, and add them to the
 | 
				
			||||
      ReferencePath item which is the ItemGroup which contains
 | 
				
			||||
      resolved paths to pass to e.g. the compiler. 
 | 
				
			||||
      Xaml targets do this for UWP but for desktop,
 | 
				
			||||
      apps can't opt-in to WinRT doing it for them.
 | 
				
			||||
    -->
 | 
				
			||||
    <Target Name="CppWinRTImplicitlyExpandTargetPlatform"
 | 
				
			||||
       Condition="'$(CppWinRTImplicitlyExpandTargetPlatform)' == 'true'">
 | 
				
			||||
 | 
				
			||||
        <ItemGroup>
 | 
				
			||||
            <_TargetPlatformWinMDs Condition="'$(TargetPlatformSdkRootOverride)' != ''" Include="$(TargetPlatformSdkRootOverride)\References\$(XeWin10TargetVersion)\**\*.winmd">
 | 
				
			||||
                <WinMDFile>true</WinMDFile>
 | 
				
			||||
                <CopyLocal>false</CopyLocal>
 | 
				
			||||
                <ReferenceGrouping>$(TargetPlatformMoniker)</ReferenceGrouping>
 | 
				
			||||
                <ReferenceGroupingDisplayName>$(TargetPlatformDisplayName)</ReferenceGroupingDisplayName>
 | 
				
			||||
                <ResolvedFrom>CppWinRTImplicitlyExpandTargetPlatform</ResolvedFrom>
 | 
				
			||||
                <IsSystemReference>True</IsSystemReference>
 | 
				
			||||
            </_TargetPlatformWinMDs>
 | 
				
			||||
            <_TargetPlatformWinMDs Condition="'$(TargetPlatformSdkRootOverride)' == ''" Include="$(WindowsSDK_MetadataPathVersioned)\**\*.winmd">
 | 
				
			||||
                <WinMDFile>true</WinMDFile>
 | 
				
			||||
                <CopyLocal>false</CopyLocal>
 | 
				
			||||
                <ReferenceGrouping>$(TargetPlatformMoniker)</ReferenceGrouping>
 | 
				
			||||
                <ReferenceGroupingDisplayName>$(TargetPlatformDisplayName)</ReferenceGroupingDisplayName>
 | 
				
			||||
                <ResolvedFrom>CppWinRTImplicitlyExpandTargetPlatform</ResolvedFrom>
 | 
				
			||||
                <IsSystemReference>True</IsSystemReference>
 | 
				
			||||
            </_TargetPlatformWinMDs>
 | 
				
			||||
        </ItemGroup>
 | 
				
			||||
 | 
				
			||||
        <Warning Condition="'@(_TargetPlatformWinMDs)' == ''"
 | 
				
			||||
          Text="Could not find target platform winmds for the SDK specified by [$(SDKIdentifier), $(SDKVersion), $(TargetPlatformIdentifier), $(TargetPlatformMinVersion), $(TargetPlatformVersion)]"/>
 | 
				
			||||
 | 
				
			||||
        <Message Importance="Low" Text="Including @(_TargetPlatformWinMDs)" />
 | 
				
			||||
 | 
				
			||||
        <ItemGroup>
 | 
				
			||||
            <ReferencePath Include="@(_TargetPlatformWinMDs)" />
 | 
				
			||||
            <_ResolveAssemblyReferenceResolvedFiles Include="@(_TargetPlatformWinMDs)" />
 | 
				
			||||
 | 
				
			||||
            <!-- Clear out 'temporary' variable -->
 | 
				
			||||
            <_TargetPlatformWinMDs Remove="@(_TargetPlatformWinMDs)" />
 | 
				
			||||
        </ItemGroup>
 | 
				
			||||
    </Target>
 | 
				
			||||
 | 
				
			||||
    <!-- Target used only to evaluate CppWinRTGenerateWindowsMetadata if it doesn't already have a value -->
 | 
				
			||||
    <Target Name="CppWinRTComputeGenerateWindowsMetadata"
 | 
				
			||||
            DependsOnTargets="CppWinRTComputeXamlGeneratedMidlInputs;GetCppWinRTProjectWinMDReferences;$(CppWinRTComputeGenerateWindowsMetadataDependsOn)">
 | 
				
			||||
 | 
				
			||||
        <PropertyGroup>
 | 
				
			||||
            <!-- For static libraries, only idl causes a winmd to be generated. 
 | 
				
			||||
                 For exe/dll, static libraries that produce a WinMD will be merged, 
 | 
				
			||||
                 so they also cause a WinMD to be generated-->
 | 
				
			||||
            <CppWinRTGenerateWindowsMetadata Condition="'$(ConfigurationType)' != 'StaticLibrary' AND '@(CppWinRTStaticProjectWinMDReferences)@(Midl)'!= ''">true</CppWinRTGenerateWindowsMetadata>
 | 
				
			||||
            <CppWinRTGenerateWindowsMetadata Condition="'$(ConfigurationType)' == 'StaticLibrary' AND '@(Midl)'!= ''">true</CppWinRTGenerateWindowsMetadata>
 | 
				
			||||
 | 
				
			||||
            <!-- At this point we checked all cases where we do generate a WinMD.
 | 
				
			||||
                 The remaining option is no WinMD. -->
 | 
				
			||||
            <CppWinRTGenerateWindowsMetadata Condition="'$(CppWinRTGenerateWindowsMetadata)'== ''">false</CppWinRTGenerateWindowsMetadata>
 | 
				
			||||
        </PropertyGroup>
 | 
				
			||||
 | 
				
			||||
    </Target>
 | 
				
			||||
 | 
				
			||||
    <Target Name="CppWinRTComputeGetResolvedWinMD"
 | 
				
			||||
            Condition="'$(CppWinRTGenerateWindowsMetadata)' == ''">
 | 
				
			||||
        <!-- If CppWinRTGenerateWindowsMetadata is not defined, compute it.-->
 | 
				
			||||
        <!-- We use Calltarget, so we don't run anything including DependsOnTargets
 | 
				
			||||
             targets if $(CppWinRTGenerateWindowsMetadata) already has a value.-->
 | 
				
			||||
        <CallTarget Targets="CppWinRTComputeGenerateWindowsMetadata" />
 | 
				
			||||
    </Target>
 | 
				
			||||
 | 
				
			||||
    <!-- This target hooks into the GetResolvedWinMD target used to resolve the WinMD for native projects
 | 
				
			||||
         so it is aware of the C++/WinRT generated WinMD.
 | 
				
			||||
         There is no good way to hook GetResolvedWinMD so we use BeforeTargets. -->
 | 
				
			||||
    <Target Name="CppWinRTGetResolvedWinMD"
 | 
				
			||||
            DependsOnTargets="CppWinRTComputeGetResolvedWinMD"
 | 
				
			||||
            BeforeTargets="GetResolvedWinMD"
 | 
				
			||||
            Returns="@(WinMDFullPath)">
 | 
				
			||||
 | 
				
			||||
        <!-- Add C++/WinRT primary WinMD to the WinMDFullPath if CppWinRTGenerateWindowsMetadata is true -->
 | 
				
			||||
        <ItemGroup>
 | 
				
			||||
            <!-- Create ItemGroup to evaluate FullPath -->
 | 
				
			||||
            <_CppWinRTProjectWinMDItems Include="$(CppWinRTProjectWinMD)" />
 | 
				
			||||
 | 
				
			||||
            <WinMDFullPath Include="@(_CppWinRTProjectWinMDItems->FullPath()->Distinct()->ClearMetadata())" Condition="'$(CppWinRTGenerateWindowsMetadata)' == 'true'">
 | 
				
			||||
                <TargetPath>$([System.IO.Path]::GetFileName('$(CppWinRTProjectWinMD)'))</TargetPath>
 | 
				
			||||
                <Primary>true</Primary>
 | 
				
			||||
                <Implementation Condition="'$(TargetExt)' == '.dll' or '$(TargetExt)' == '.exe'">$(WinMDImplementationPath)$(TargetName)$(TargetExt)</Implementation>
 | 
				
			||||
                <FileType>winmd</FileType>
 | 
				
			||||
                <WinMDFile>true</WinMDFile>
 | 
				
			||||
                <ProjectName>$(MSBuildProjectName)</ProjectName>
 | 
				
			||||
                <ProjectType>$(ConfigurationType)</ProjectType>
 | 
				
			||||
            </WinMDFullPath>
 | 
				
			||||
 | 
				
			||||
            <_CppWinRTProjectWinMDItems Remove="$(CppWinRTProjectWinMD)" />
 | 
				
			||||
        </ItemGroup>
 | 
				
			||||
 | 
				
			||||
        <Message Text="GetResolvedWinMD: @(WinMDFullPath->'%(FullPath)')" Importance="$(CppWinRTVerbosity)"/>
 | 
				
			||||
    </Target>
 | 
				
			||||
 | 
				
			||||
    <!-- Static library reference WinMDs are merged into the project WinMD that
 | 
				
			||||
         references it and might have the same name because they often share namespace. 
 | 
				
			||||
         Therefore they shouldn't be copied to the output folder
 | 
				
			||||
         because they might override files in the output folder with the
 | 
				
			||||
         same name, causing missing types. -->
 | 
				
			||||
    <Target Name="CppWinRTMarkStaticLibrariesPrivate"
 | 
				
			||||
            DependsOnTargets="ResolveProjectReferences"
 | 
				
			||||
            Returns="@(_ResolvedProjectReferencePaths)">
 | 
				
			||||
        <ItemGroup>
 | 
				
			||||
            <_ResolvedProjectReferencePaths Condition="'%(_ResolvedProjectReferencePaths.ProjectType)' == 'StaticLibrary'">
 | 
				
			||||
                <Private>false</Private>
 | 
				
			||||
            </_ResolvedProjectReferencePaths>
 | 
				
			||||
        </ItemGroup>
 | 
				
			||||
    </Target>
 | 
				
			||||
 | 
				
			||||
    <!--Define platform projection WinMD inputs-->
 | 
				
			||||
    <Target Name="GetCppWinRTPlatformWinMDInputs"
 | 
				
			||||
            DependsOnTargets="ResolveAssemblyReferences;GetCppWinRTPlatformWinMDReferences"
 | 
				
			||||
            Returns="@(CppWinRTPlatformWinMDInputs)">
 | 
				
			||||
        <ItemGroup>
 | 
				
			||||
            <_CppWinRTPlatformWinMDInputs Remove="@(_CppWinRTPlatformWinMDInputs)" />
 | 
				
			||||
            <_CppWinRTPlatformWinMDInputs Include="@(CppWinRTPlatformWinMDReferences)" />
 | 
				
			||||
            <CppWinRTPlatformWinMDInputs Include="@(_CppWinRTPlatformWinMDInputs)">
 | 
				
			||||
                <WinMDPath>%(FullPath)</WinMDPath>
 | 
				
			||||
            </CppWinRTPlatformWinMDInputs>
 | 
				
			||||
        </ItemGroup>
 | 
				
			||||
        <Message Text="CppWinRTPlatformWinMDInputs: @(CppWinRTPlatformWinMDInputs->'%(WinMDPath)')" Importance="$(CppWinRTVerbosity)"/>
 | 
				
			||||
    </Target>
 | 
				
			||||
 | 
				
			||||
    <!--Define platform WinMD references for modern IDL compilation-->
 | 
				
			||||
    <Target Name="GetCppWinRTPlatformWinMDReferences"
 | 
				
			||||
            DependsOnTargets="ResolveAssemblyReferences;$(GetCppWinRTPlatformWinMDReferencesDependsOn)"
 | 
				
			||||
            Returns="@(CppWinRTPlatformWinMDReferences)">
 | 
				
			||||
        <ItemGroup>
 | 
				
			||||
            <_CppWinRTPlatformWinMDReferences Remove="@(_CppWinRTPlatformWinMDReferences)" />
 | 
				
			||||
            <_CppWinRTPlatformWinMDReferences Include="@(ReferencePath)" Condition="'%(ReferencePath.IsSystemReference)' == 'true' and '%(ReferencePath.WinMDFile)' == 'true' and '%(ReferencePath.ReferenceSourceTarget)' == 'ResolveAssemblyReference'" />
 | 
				
			||||
            <!-- Also include the winmds from the ImplicitlyExpandTargetPlatform target if it is enabled. -->
 | 
				
			||||
            <_CppWinRTPlatformWinMDReferences Include="@(ReferencePath)" Condition="'%(ReferencePath.IsSystemReference)' == 'true' and '%(ReferencePath.WinMDFile)' == 'true' and '%(ReferencePath.ResolvedFrom)' == 'ImplicitlyExpandTargetPlatform'" />
 | 
				
			||||
            <!-- Also include the winmds from the CppWinRTImplicitlyExpandTargetPlatform target if it is enabled. -->
 | 
				
			||||
            <_CppWinRTPlatformWinMDReferences Include="@(ReferencePath)" Condition="'%(ReferencePath.IsSystemReference)' == 'true' and '%(ReferencePath.WinMDFile)' == 'true' and '%(ReferencePath.ResolvedFrom)' == 'CppWinRTImplicitlyExpandTargetPlatform'" />
 | 
				
			||||
            <_CppWinRTPlatformWinMDReferences Include="$(CppWinRTSDKReferences)" />
 | 
				
			||||
            <CppWinRTPlatformWinMDReferences Remove="@(CppWinRTPlatformWinMDReferences)"/>
 | 
				
			||||
            <CppWinRTPlatformWinMDReferences Include="@(_CppWinRTPlatformWinMDReferences->'%(FullPath)'->Distinct())">
 | 
				
			||||
                <WinMDPath>%(FullPath)</WinMDPath>
 | 
				
			||||
            </CppWinRTPlatformWinMDReferences>
 | 
				
			||||
        </ItemGroup>
 | 
				
			||||
        <Message Text="CppWinRTPlatformWinMDReferences: @(CppWinRTPlatformWinMDReferences->'%(WinMDPath)')" Importance="$(CppWinRTVerbosity)"/>
 | 
				
			||||
    </Target>
 | 
				
			||||
 | 
				
			||||
    <!--Get direct WinMD references (including Nuget packages) for projections, IDL processing, and AppX packaging-->
 | 
				
			||||
    <Target Name="GetCppWinRTDirectWinMDReferences"
 | 
				
			||||
            DependsOnTargets="ExpandSDKReferences;ResolveAssemblyReferences;$(GetCppWinRTDirectWinMDReferencesDependsOn)"
 | 
				
			||||
            Returns="@(CppWinRTDirectWinMDReferences)">
 | 
				
			||||
        <ItemGroup>
 | 
				
			||||
            <_CppWinRTDirectWinMDReferences Remove="@(_CppWinRTDirectWinMDReferences)" />
 | 
				
			||||
            <_CppWinRTDirectWinMDReferences Include="@(ReferencePath)" Condition="'%(ReferencePath.IsSystemReference)' != 'true' and '%(ReferencePath.WinMDFile)' == 'true' and '%(ReferencePath.ReferenceSourceTarget)' == 'ResolveAssemblyReference'" />
 | 
				
			||||
            <_CppWinRTDirectWinMDReferences Include="@(ReferencePath)" Condition="'%(ReferencePath.WinMDFile)' == 'true' and '%(ReferencePath.ReferenceSourceTarget)' == 'ExpandSDKReference'" />
 | 
				
			||||
            <CppWinRTDirectWinMDReferences Remove="@(CppWinRTDirectWinMDReferences)"/>
 | 
				
			||||
            <CppWinRTDirectWinMDReferences Include="@(_CppWinRTDirectWinMDReferences)">
 | 
				
			||||
                <WinMDPath>%(FullPath)</WinMDPath>
 | 
				
			||||
            </CppWinRTDirectWinMDReferences>
 | 
				
			||||
        </ItemGroup>
 | 
				
			||||
        <Message Text="CppWinRTDirectWinMDReferences: @(CppWinRTDirectWinMDReferences->'%(WinMDPath)')" Importance="$(CppWinRTVerbosity)"/>
 | 
				
			||||
    </Target>
 | 
				
			||||
 | 
				
			||||
    <!--Get direct WinMD project references for projections, IDL processing, and AppX packaging-->
 | 
				
			||||
    <Target Name="GetCppWinRTProjectWinMDReferences"
 | 
				
			||||
            DependsOnTargets="ResolveProjectReferences;$(GetCppWinRTProjectWinMDReferencesDependsOn)"
 | 
				
			||||
            Returns="@(CppWinRTStaticProjectWinMDReferences);@(CppWinRTDynamicProjectWinMDReferences)">
 | 
				
			||||
        <ItemGroup>
 | 
				
			||||
            <!-- Get static library project references -->
 | 
				
			||||
            <_CppWinRTStaticProjectReferences Remove="@(_CppWinRTStaticProjectReferences)"/>
 | 
				
			||||
            <_CppWinRTStaticProjectReferences Include="@(_ResolvedProjectReferencePaths)"
 | 
				
			||||
                Condition= "'%(_ResolvedProjectReferencePaths.ProjectType)'=='StaticLibrary' AND 
 | 
				
			||||
                    '%(_ResolvedProjectReferencePaths.WinMDFile)' == 'true'"/>
 | 
				
			||||
            <!--Get dynamic library project references-->
 | 
				
			||||
            <_CppWinRTDynamicProjectReferences Remove="@(_CppWinRTDynamicProjectReferences)"/>
 | 
				
			||||
            <_CppWinRTDynamicProjectReferences Include="@(_ResolvedProjectReferencePaths)"
 | 
				
			||||
                Condition= "'%(_ResolvedProjectReferencePaths.ProjectType)'!='StaticLibrary' AND 
 | 
				
			||||
                ('%(_ResolvedProjectReferencePaths.WinMDFile)' == 'true' OR
 | 
				
			||||
                    ('%(_ResolvedProjectReferencePaths.WinMDFile)' == '' AND '%(_ResolvedProjectReferencePaths.Extension)' == '.winmd'))"/>
 | 
				
			||||
        </ItemGroup>
 | 
				
			||||
        <ItemGroup>
 | 
				
			||||
            <CppWinRTStaticProjectWinMDReferences Remove="@(CppWinRTStaticProjectWinMDReferences)" />
 | 
				
			||||
            <CppWinRTStaticProjectWinMDReferences Include="@(_CppWinRTStaticProjectReferences)">
 | 
				
			||||
                <WinMDPath>%(FullPath)</WinMDPath>
 | 
				
			||||
            </CppWinRTStaticProjectWinMDReferences>
 | 
				
			||||
            <CppWinRTDynamicProjectWinMDReferences Remove="@(CppWinRTDynamicProjectWinMDReferences)" />
 | 
				
			||||
            <CppWinRTDynamicProjectWinMDReferences Include="@(_CppWinRTDynamicProjectReferences)">
 | 
				
			||||
                <WinMDPath>%(FullPath)</WinMDPath>
 | 
				
			||||
            </CppWinRTDynamicProjectWinMDReferences>
 | 
				
			||||
        </ItemGroup>
 | 
				
			||||
        <Message Text="CppWinRTStaticProjectWinMDReferences: @(CppWinRTStaticProjectWinMDReferences->'%(WinMDPath)')" Importance="$(CppWinRTVerbosity)"/>
 | 
				
			||||
        <Message Text="CppWinRTDynamicProjectWinMDReferences: @(CppWinRTDynamicProjectWinMDReferences->'%(WinMDPath)')" Importance="$(CppWinRTVerbosity)"/>
 | 
				
			||||
    </Target>
 | 
				
			||||
 | 
				
			||||
    <Target Name="CppWinRTResolveReferences" DependsOnTargets="GetCppWinRTPlatformWinMDReferences;GetCppWinRTDirectWinMDReferences;GetCppWinRTProjectWinMDReferences;$(CppWinRTResolveReferencesDependsOn)" />
 | 
				
			||||
 | 
				
			||||
    <!-- Calculates the input files and metadata directories to be passed to MdMerge -->
 | 
				
			||||
    <Target Name="GetCppWinRTMdMergeInputs"
 | 
				
			||||
                DependsOnTargets="CppWinRTComputeXamlGeneratedMidlInputs;CppWinRTResolveReferences;"
 | 
				
			||||
                Returns="@(CppWinRTMdMergeMetadataDirectories);@(CppWinRTMdMergeInputs)">
 | 
				
			||||
        <ItemGroup>
 | 
				
			||||
            <_MdMergeInputs Remove="@(_MdMergeInputs)"/>
 | 
				
			||||
            <_MdMergeInputs Include="@(Midl)">
 | 
				
			||||
                <WinMDPath>%(Midl.OutputDirectory)%(Midl.MetadataFileName)</WinMDPath>
 | 
				
			||||
                <MdMergeOutputFile>$(CppWinRTProjectWinMD)</MdMergeOutputFile>
 | 
				
			||||
            </_MdMergeInputs>
 | 
				
			||||
            <!-- Static libraries don't mdmerge other static libraries.
 | 
				
			||||
                 Instead they are passed as independent inputs for the component projection. -->
 | 
				
			||||
            <_MdMergeInputs Include="@(CppWinRTStaticProjectWinMDReferences)" Condition="'$(ConfigurationType)' != 'StaticLibrary'">
 | 
				
			||||
                <MdMergeOutputFile>$(CppWinRTProjectWinMD)</MdMergeOutputFile>
 | 
				
			||||
            </_MdMergeInputs>
 | 
				
			||||
            <_MdMergeReferences Remove="@(_MdMergeReferences)" />
 | 
				
			||||
            <!-- Static libraries don't mdmerge other static libraries.
 | 
				
			||||
                 They are however used as references so idl can reference classes from other libs. -->
 | 
				
			||||
            <_MdMergeReferences Include="@(CppWinRTStaticProjectWinMDReferences)" Condition="'$(ConfigurationType)' == 'StaticLibrary'" />
 | 
				
			||||
            <_MdMergeReferences Include="@(CppWinRTDirectWinMDReferences)" />
 | 
				
			||||
            <_MdMergeReferences Include="@(CppWinRTDynamicProjectWinMDReferences)" />
 | 
				
			||||
            <_MdMergeReferences Include="@(CppWinRTPlatformWinMDReferences)" />
 | 
				
			||||
            <CppWinRTMdMergeMetadataDirectories Remove="@(CppWinRTMdMergeMetadataDirectories)" />
 | 
				
			||||
            <CppWinRTMdMergeMetadataDirectories Include="@(_MdMergeReferences->'%(RelativeDir)'->Distinct())" />
 | 
				
			||||
            <CppWinRTMdMergeInputs Remove="@(CppWinRTMdMergeInputs)" />
 | 
				
			||||
            <CppWinRTMdMergeInputs Include="@(_MdMergeInputs->'%(WinMDPath)'->Distinct())" />
 | 
				
			||||
        </ItemGroup>
 | 
				
			||||
        <Message Text="CppWinRTMdMergeInputs: @(CppWinRTMdMergeInputs)" Importance="$(CppWinRTVerbosity)"/>
 | 
				
			||||
        <Message Text="CppWinRTMdMergeMetadataDirectories: @(CppWinRTMdMergeMetadataDirectories)" Importance="$(CppWinRTVerbosity)"/>
 | 
				
			||||
    </Target>
 | 
				
			||||
 | 
				
			||||
    <!-- Adds the XamlMetadataProvider idl to the Midl itemgroup, if building any xaml content -->
 | 
				
			||||
    <!-- Note that Condition is evaluated before DependsOnTargets are run -->
 | 
				
			||||
    <Target Name="CppWinRTComputeXamlGeneratedMidlInputs"
 | 
				
			||||
            DependsOnTargets="$(CppWinRTComputeXamlGeneratedMidlInputsDependsOn)"
 | 
				
			||||
            Condition="'@(Page)@(ApplicationDefinition)' != '' and '$(XamlLanguage)' == 'CppWinRT' and '$(CppWinRTAddXamlMetaDataProviderIdl)' == 'true'">
 | 
				
			||||
        <PropertyGroup>
 | 
				
			||||
            <_DisableReferences>false</_DisableReferences>
 | 
				
			||||
            <_DisableReferences Condition="('$(CppWinRTOverrideSDKReferences)' != 'true') and ('$(TargetPlatformVersion)' < '10.0.18310.0')">true</_DisableReferences>
 | 
				
			||||
        </PropertyGroup>
 | 
				
			||||
 | 
				
			||||
        <ItemGroup>
 | 
				
			||||
            <Midl Remove="$(XamlMetaDataProviderIdl)" />
 | 
				
			||||
            <Midl Include="$(XamlMetaDataProviderIdl)">
 | 
				
			||||
                <DisableReferences Condition="$(_DisableReferences)">>true</DisableReferences>
 | 
				
			||||
            </Midl>
 | 
				
			||||
        </ItemGroup>
 | 
				
			||||
    </Target>
 | 
				
			||||
 | 
				
			||||
    <!-- Adds the XamlMetadataProvider cpp to the ClCompile itemgroup, if building any xaml content -->
 | 
				
			||||
    <!-- Note that Condition is evaluated before DependsOnTargets are run -->
 | 
				
			||||
    <Target Name="CppWinRTComputeXamlGeneratedCompileInputs"
 | 
				
			||||
            DependsOnTargets="$(CppWinRTComputeXamlGeneratedCompileInputsDependsOn)"
 | 
				
			||||
            Condition="'@(Page)@(ApplicationDefinition)' != '' and '$(XamlLanguage)' == 'CppWinRT' and '$(CppWinRTAddXamlMetaDataProviderIdl)' == 'true'">
 | 
				
			||||
        <ItemGroup>
 | 
				
			||||
            <ClCompile Remove="$(XamlMetaDataProviderCpp)" />
 | 
				
			||||
            <ClCompile Include="$(XamlMetaDataProviderCpp)" Condition="'$(CppWinRTOptimized)'=='true'">
 | 
				
			||||
                <CompilerIteration>XamlGenerated</CompilerIteration>
 | 
				
			||||
            </ClCompile>
 | 
				
			||||
        </ItemGroup>
 | 
				
			||||
    </Target>
 | 
				
			||||
 | 
				
			||||
    <!--If building any Xaml content, write XamlMetaDataProvider idl file -->
 | 
				
			||||
    <Target Name="CppWinRTAddXamlMetaDataProviderIdl"
 | 
				
			||||
            Condition="'@(Page)@(ApplicationDefinition)' != '' and '$(XamlLanguage)' == 'CppWinRT' and '$(CppWinRTAddXamlMetaDataProviderIdl)' == 'true'">
 | 
				
			||||
        <PropertyGroup>
 | 
				
			||||
            <_DisableReferences>false</_DisableReferences>
 | 
				
			||||
            <_DisableReferences Condition="('$(CppWinRTOverrideSDKReferences)' != 'true') and ('$(TargetPlatformVersion)' < '10.0.18310.0')">true</_DisableReferences>
 | 
				
			||||
            <FullXamlMetadataProviderAttribute Condition="$(XamlCodeGenerationControlFlags.Contains('FullXamlMetadataProvider'))">[$(XamlNamespace).Markup.FullXamlMetadataProvider] </FullXamlMetadataProviderAttribute>
 | 
				
			||||
            <XamlMarkupIdlImport Condition="$(_DisableReferences)">import "$(XamlNamespace).Markup.idl"%3b</XamlMarkupIdlImport>
 | 
				
			||||
            <XamlMetaDataProviderIdlLines>
 | 
				
			||||
// This file is generated by the build to support Xaml apps
 | 
				
			||||
$(XamlMarkupIdlImport)
 | 
				
			||||
namespace $(RootNamespace)
 | 
				
			||||
{
 | 
				
			||||
    $(FullXamlMetadataProviderAttribute)runtimeclass XamlMetaDataProvider : [default] $(XamlNamespace).Markup.IXamlMetadataProvider
 | 
				
			||||
    {
 | 
				
			||||
        XamlMetaDataProvider()%3b
 | 
				
			||||
    }
 | 
				
			||||
}
 | 
				
			||||
</XamlMetaDataProviderIdlLines>
 | 
				
			||||
        </PropertyGroup>
 | 
				
			||||
        <WriteLinesToFile Condition="!$(CppWinRTWriteOnlyWhenDifferent)"
 | 
				
			||||
            File="$(XamlMetaDataProviderIdl)" Lines="$(XamlMetaDataProviderIdlLines)"
 | 
				
			||||
            Overwrite="true" />
 | 
				
			||||
        <WriteLinesToFile Condition="$(CppWinRTWriteOnlyWhenDifferent)"
 | 
				
			||||
            File="$(XamlMetaDataProviderIdl)" Lines="$(XamlMetaDataProviderIdlLines)"
 | 
				
			||||
            Overwrite="true"
 | 
				
			||||
            WriteOnlyWhenDifferent="true" />
 | 
				
			||||
    </Target>
 | 
				
			||||
 | 
				
			||||
    <!--If building any Xaml content, write XamlMetaDataProvider cpp file -->
 | 
				
			||||
    <Target Name="CppWinRTAddXamlMetaDataProviderCpp"
 | 
				
			||||
            Condition="'@(Page)@(ApplicationDefinition)' != '' and '$(XamlLanguage)' == 'CppWinRT' and '$(CppWinRTAddXamlMetaDataProviderIdl)' == 'true'">
 | 
				
			||||
        <PropertyGroup>
 | 
				
			||||
            <_PCH>@(ClCompile->Metadata('PrecompiledHeaderFile')->Distinct())</_PCH>
 | 
				
			||||
            <XamlMetaDataProviderPch Condition="'$(_PCH)'!=''">#include "$(_PCH)"</XamlMetaDataProviderPch>
 | 
				
			||||
            <XamlMetaDataProviderCppLines>
 | 
				
			||||
// This file is generated by the build to support Xaml apps
 | 
				
			||||
$(XamlMetaDataProviderPch)
 | 
				
			||||
#include "XamlMetaDataProvider.h"
 | 
				
			||||
#include "XamlMetaDataProvider.g.cpp"
 | 
				
			||||
</XamlMetaDataProviderCppLines>
 | 
				
			||||
        </PropertyGroup>
 | 
				
			||||
        <WriteLinesToFile Condition="!$(CppWinRTWriteOnlyWhenDifferent)"
 | 
				
			||||
            File="$(XamlMetaDataProviderCpp)" Lines="$(XamlMetaDataProviderCppLines)"
 | 
				
			||||
            Overwrite="true" />
 | 
				
			||||
        <WriteLinesToFile Condition="$(CppWinRTWriteOnlyWhenDifferent)"
 | 
				
			||||
            File="$(XamlMetaDataProviderCpp)" Lines="$(XamlMetaDataProviderCppLines)"
 | 
				
			||||
            Overwrite="true"
 | 
				
			||||
            WriteOnlyWhenDifferent="true" />
 | 
				
			||||
    </Target>
 | 
				
			||||
 | 
				
			||||
    <!--Insert Midl /references to Platform WinMDs, library reference WinMDs, and direct reference WinMDs-->
 | 
				
			||||
    <Target Name="CppWinRTSetMidlReferences"
 | 
				
			||||
            Condition="'$(CppWinRTModernIDL)' != 'false'"
 | 
				
			||||
            DependsOnTargets="GetCppWinRTPlatformWinMDReferences;GetCppWinRTDirectWinMDReferences;GetCppWinRTProjectWinMDReferences;$(CppWinRTSetMidlReferencesDependsOn)"
 | 
				
			||||
            Inputs="$(MSBuildAllProjects);@(CppWinRTDirectWinMDReferences);@(CppWinRTStaticProjectWinMDReferences);@(CppWinRTDynamicProjectWinMDReferences);@(CppWinRTPlatformWinMDReferences)"
 | 
				
			||||
            Outputs="$(CppWinRTMidlResponseFile)">
 | 
				
			||||
        <ItemGroup>
 | 
				
			||||
            <_MidlReferences Remove="@(_MidlReferences)"/>
 | 
				
			||||
            <_MidlReferences Include="@(CppWinRTDirectWinMDReferences)"/>
 | 
				
			||||
            <_MidlReferences Include="@(CppWinRTStaticProjectWinMDReferences)"/>
 | 
				
			||||
            <_MidlReferences Include="@(CppWinRTDynamicProjectWinMDReferences)"/>
 | 
				
			||||
            <_MidlReferences Include="@(CppWinRTPlatformWinMDReferences)"/>
 | 
				
			||||
            <_MidlReferencesDistinct Remove="@(_MidlReferencesDistinct)" />
 | 
				
			||||
            <_MidlReferencesDistinct Include="@(_MidlReferences->'%(WinMDPath)'->Distinct())" />
 | 
				
			||||
            <Midl Condition="'%(Midl.DisableReferences)'==''">
 | 
				
			||||
                <AdditionalOptions>%(Midl.AdditionalOptions) %40"$(CppWinRTMidlResponseFile)"</AdditionalOptions>
 | 
				
			||||
            </Midl>
 | 
				
			||||
        </ItemGroup>
 | 
				
			||||
        <PropertyGroup>
 | 
				
			||||
            <_MidlrtParameters>@(_MidlReferencesDistinct->'/reference "%(WinMDPath)"','
')</_MidlrtParameters>
 | 
				
			||||
        </PropertyGroup>
 | 
				
			||||
        <!-- Always write the midlrt.rsp file when the target runs, because the file is used as the output of this target. -->
 | 
				
			||||
        <WriteLinesToFile
 | 
				
			||||
            File="$(CppWinRTMidlResponseFile)" Lines="$(_MidlrtParameters)"
 | 
				
			||||
            Overwrite="true" />
 | 
				
			||||
        <Message Text="CppWinRTMidlReferences: @(_MidlReferences->'%(WinMDPath)')" Importance="$(CppWinRTVerbosity)"/>
 | 
				
			||||
    </Target>
 | 
				
			||||
 | 
				
			||||
    <!--Ctrl+F7 (selected file) midl compilation support-->
 | 
				
			||||
    <Target Name="CppWinRTSetSelectMidlReferences" BeforeTargets="SelectMidl" DependsOnTargets="CppWinRTSetMidlReferences" />
 | 
				
			||||
 | 
				
			||||
    <!--
 | 
				
			||||
    ============================================================
 | 
				
			||||
    Generate a file used to track MdMerge dependencies between incremental build
 | 
				
			||||
    executions. This handles cases where items are added or removed and can't 
 | 
				
			||||
    otherwise be detected with timestamp comparisons. The file contains a hash of 
 | 
				
			||||
    MdMerge inputs that are known to contribute to incremental build inconsistencies.
 | 
				
			||||
    NOTE: this is not used when building with older MSBuild versions.
 | 
				
			||||
    ============================================================
 | 
				
			||||
    -->
 | 
				
			||||
    <Target Name="_CppWinRTGenerateMergeProjectWinMDDependencyCache" Condition="'$(CppWinRTHasHashTask)' == 'true'" DependsOnTargets="Midl;GetCppWinRTMdMergeInputs">
 | 
				
			||||
        <ItemGroup>
 | 
				
			||||
            <CustomAdditionalMdMergeInputs Include="$(IntermediateOutputPath)$(MSBuildProjectFile).MdMergeInputs.cache" />
 | 
				
			||||
            <MdMergeCache Include="@(CppWinRTMdMergeInputs)" />
 | 
				
			||||
            <MdMergeCache Include="@(Page)" />
 | 
				
			||||
            <MdMergeCache Include="@(ApplicationDefinition)" />
 | 
				
			||||
            <!-- No need to include properties here as those should be caught by having $(MSBuildAllProjects) as input to the target-->
 | 
				
			||||
        </ItemGroup>
 | 
				
			||||
 | 
				
			||||
        <Hash
 | 
				
			||||
          ItemsToHash="@(MdMergeCache)"
 | 
				
			||||
          IgnoreCase="$([MSBuild]::ValueOrDefault(`$(MdMergeCacheIgnoreCase)`, `true`))">
 | 
				
			||||
            <Output TaskParameter="HashResult" PropertyName="MdMergeDependencyHash" />
 | 
				
			||||
        </Hash>
 | 
				
			||||
 | 
				
			||||
        <WriteLinesToFile Condition="!$(CppWinRTWriteOnlyWhenDifferent)"
 | 
				
			||||
            File="$(IntermediateOutputPath)$(MSBuildProjectFile).MdMergeInputs.cache" Lines="$(MdMergeDependencyHash)"
 | 
				
			||||
            Overwrite="true" />
 | 
				
			||||
        <WriteLinesToFile Condition="$(CppWinRTWriteOnlyWhenDifferent)"
 | 
				
			||||
            File="$(IntermediateOutputPath)$(MSBuildProjectFile).MdMergeInputs.cache" Lines="$(MdMergeDependencyHash)"
 | 
				
			||||
            Overwrite="true"
 | 
				
			||||
            WriteOnlyWhenDifferent="true" />
 | 
				
			||||
 | 
				
			||||
        <ItemGroup>
 | 
				
			||||
            <FileWrites Include="$(IntDir)$(MSBuildProjectFile).MdMergeInputs.cache" />
 | 
				
			||||
        </ItemGroup>
 | 
				
			||||
    </Target>
 | 
				
			||||
 | 
				
			||||
    <Target Name="_CppWinRTCleanMdMergeOutputs">
 | 
				
			||||
        <Delete Files="$(CppWinRTMdMergeResponseFile)" />
 | 
				
			||||
    </Target>
 | 
				
			||||
 | 
				
			||||
    <!--Merge project-generated WinMDs and project-referenced static library WinMDs into project WinMD-->
 | 
				
			||||
    <Target Name="CppWinRTMergeProjectWinMDInputs"
 | 
				
			||||
            DependsOnTargets="Midl;GetCppWinRTMdMergeInputs;_CppWinRTGenerateMergeProjectWinMDDependencyCache;$(CppWinRTMergeProjectWinMDInputsDependsOn)"
 | 
				
			||||
            Inputs="$(MSBuildAllProjects);@(CppWinRTMdMergeInputs);@(CustomAdditionalMdMergeInputs)"
 | 
				
			||||
            Outputs="@(_MdMergedOutput);$(CppWinRTMdMergeResponseFile)">
 | 
				
			||||
        <PropertyGroup>
 | 
				
			||||
            <!--Note: CppWinRTNamespaceMergeDepth supersedes CppWinRTMergeDepth-->
 | 
				
			||||
            <_MdMergeDepth Condition="'$(CppWinRTNamespaceMergeDepth)' != ''">-n:$(CppWinRTNamespaceMergeDepth)</_MdMergeDepth>
 | 
				
			||||
            <_MdMergeDepth Condition="'$(_MdMergeDepth)' == ''">$(CppWinRTMergeDepth)</_MdMergeDepth>
 | 
				
			||||
            <_MdMergeDepth Condition="'$(_MdMergeDepth)' == '' And '$(CppWinRTRootNamespaceAutoMerge)' == 'true'">-n:$(RootNamespace.Split('.').length)</_MdMergeDepth>
 | 
				
			||||
            <_MdMergeDepth Condition="'$(_MdMergeDepth)' == '' And ('@(Page)' != '' Or '@(ApplicationDefinition)' != '')">-n:1</_MdMergeDepth>
 | 
				
			||||
            <_MdMergeCommand>$(MdMergePath)mdmerge %40"$(CppWinRTMdMergeResponseFile)"</_MdMergeCommand>
 | 
				
			||||
        </PropertyGroup>
 | 
				
			||||
        <PropertyGroup>
 | 
				
			||||
            <!-- mdmerge.exe wants the folders to not have a trailing \ -->
 | 
				
			||||
            <_MdMergeParameters Condition="'$(CppWinRTMergeNoValidate)'!='true'">-v</_MdMergeParameters>
 | 
				
			||||
            <_MdMergeParameters>$(_MdMergeParameters) @(CppWinRTMdMergeMetadataDirectories->'-metadata_dir "%(RelativeDir)."', '
')</_MdMergeParameters>
 | 
				
			||||
            <_MdMergeParameters>$(_MdMergeParameters) @(CppWinRTMdMergeInputs->'-i "%(Identity)"', '
')</_MdMergeParameters>
 | 
				
			||||
            <_MdMergeParameters>$(_MdMergeParameters) -o "$(CppWinRTMergedDir.TrimEnd('\'))" -partial $(_MdMergeDepth)</_MdMergeParameters>
 | 
				
			||||
        </PropertyGroup>
 | 
				
			||||
 | 
				
			||||
        <!-- Always write the mdmerge.rsp file when the target runs, because the file is used as the output of this target. -->
 | 
				
			||||
        <WriteLinesToFile
 | 
				
			||||
            File="$(CppWinRTMdMergeResponseFile)" Lines="$(_MdMergeParameters)"
 | 
				
			||||
            Overwrite="true" />
 | 
				
			||||
 | 
				
			||||
        <MakeDir Directories="$(CppWinRTUnmergedDir);$(CppWinRTMergedDir)" />
 | 
				
			||||
        <Message Text="$(_MdMergeCommand)" Importance="$(CppWinRTVerbosity)" Condition="'@(CppWinRTMdMergeInputs)' != ''" />
 | 
				
			||||
        <!-- Only run mdmerge.exe when we actually have inputs -->
 | 
				
			||||
        <Exec Command="$(_MdMergeCommand)" Condition="'@(CppWinRTMdMergeInputs)' != ''" />
 | 
				
			||||
        <ItemGroup>
 | 
				
			||||
            <_MdMergedOutput Remove="@(_MdMergedOutput)"/>
 | 
				
			||||
            <_MdMergedOutput Include="$(CppWinRTMergedDir)*.winmd"/>
 | 
				
			||||
        </ItemGroup>
 | 
				
			||||
        <Message Text="CppWinRTMdMerge output: @(MdMergeOutput)" Importance="$(CppWinRTVerbosity)"/>
 | 
				
			||||
 | 
				
			||||
        <!-- Clean the output file if the target failed to indicate it needs to be rebuild -->
 | 
				
			||||
        <OnError ExecuteTargets="_CppWinRTCleanMdMergeOutputs" />
 | 
				
			||||
 | 
				
			||||
    </Target>
 | 
				
			||||
 | 
				
			||||
    <!-- Only copy winmd to output folder if CppWinRTGenerateWindowsMetadata is true -->
 | 
				
			||||
    <!-- Note that Condition is evaluated before DependsOnTargets are run -->
 | 
				
			||||
    <Target Name="CppWinRTCopyWinMDToOutputDirectory"
 | 
				
			||||
            Condition="'$(CppWinRTGenerateWindowsMetadata)' == 'true'"
 | 
				
			||||
            DependsOnTargets="CppWinRTMergeProjectWinMDInputs;$(CppWinRTCopyWinMDToOutputDirectoryDependsOn)"
 | 
				
			||||
            Inputs="@(_MdMergedOutput)"
 | 
				
			||||
            Outputs="$(CppWinRTProjectWinMD)">
 | 
				
			||||
        <Copy UseHardlinksIfPossible="$(CppWinRTUseHardlinksIfPossible)"
 | 
				
			||||
            SkipUnchangedFiles="$(CppWinRTSkipUnchangedFiles)"
 | 
				
			||||
            SourceFiles="@(_MdMergedOutput)"
 | 
				
			||||
            DestinationFiles="@(_MdMergedOutput->'$(OutDir)%(Filename)%(Extension)')" />
 | 
				
			||||
 | 
				
			||||
        <ItemGroup>
 | 
				
			||||
            <FileWrites Include="$(CppWinRTProjectWinMD)"/>
 | 
				
			||||
        </ItemGroup>
 | 
				
			||||
    </Target>
 | 
				
			||||
 | 
				
			||||
    <!--
 | 
				
			||||
    ============================================================
 | 
				
			||||
    Generate a file used to track C++/WinRT platform WinMD input dependencies between incremental build
 | 
				
			||||
    executions. This handles cases where items are added or removed and can't 
 | 
				
			||||
    otherwise be detected with timestamp comparisons. The file contains a hash of 
 | 
				
			||||
    the platform winmd inputs that are known to contribute to incremental build inconsistencies.
 | 
				
			||||
    NOTE: this is not used when building with older MSBuild versions.
 | 
				
			||||
    ============================================================
 | 
				
			||||
    -->
 | 
				
			||||
    <Target Name="_CppWinRTMakePlatformProjectionDependencyCache"  Condition="'$(CppWinRTHasHashTask)' == 'true'" DependsOnTargets="CppWinRTResolveReferences;GetCppWinRTPlatformWinMDInputs">
 | 
				
			||||
        <ItemGroup>
 | 
				
			||||
            <CustomAdditionalPlatformWinMDInputs Include="$(IntDir)$(MSBuildProjectFile).cppwinrt_plat.cache" />
 | 
				
			||||
            <CppWinRTPlatformProjectionCache Include="@(CppWinRTPlatformWinMDInputs)" />
 | 
				
			||||
            <!-- No need to include properties here as those should be caught by having $(MSBuildAllProjects) as input to the target-->
 | 
				
			||||
        </ItemGroup>
 | 
				
			||||
 | 
				
			||||
        <Hash
 | 
				
			||||
          ItemsToHash="@(CppWinRTPlatformProjectionCache)"
 | 
				
			||||
          IgnoreCase="$([MSBuild]::ValueOrDefault(`$(CppWinRTPlatformProjectionCacheIgnoreCase)`, `true`))">
 | 
				
			||||
            <Output TaskParameter="HashResult" PropertyName="CppWinRTPlatformProjectionDependencyHash" />
 | 
				
			||||
        </Hash>
 | 
				
			||||
 | 
				
			||||
        <WriteLinesToFile Condition="!$(CppWinRTWriteOnlyWhenDifferent)"
 | 
				
			||||
            File="$(IntDir)$(MSBuildProjectFile).cppwinrt_plat.cache"
 | 
				
			||||
            Lines="$(CppWinRTPlatformProjectionDependencyHash)"
 | 
				
			||||
            Overwrite="true" />
 | 
				
			||||
        <WriteLinesToFile Condition="$(CppWinRTWriteOnlyWhenDifferent)"
 | 
				
			||||
            File="$(IntDir)$(MSBuildProjectFile).cppwinrt_plat.cache"
 | 
				
			||||
            Lines="$(CppWinRTPlatformProjectionDependencyHash)"
 | 
				
			||||
            Overwrite="true"
 | 
				
			||||
            WriteOnlyWhenDifferent="true" />
 | 
				
			||||
 | 
				
			||||
        <ItemGroup>
 | 
				
			||||
            <FileWrites Include="$(IntDir)$(MSBuildProjectFile).cppwinrt_plat.cache" />
 | 
				
			||||
        </ItemGroup>
 | 
				
			||||
    </Target>
 | 
				
			||||
 | 
				
			||||
    <Target Name="_CppWinRTCleanMakePlatformProjectionOutputs">
 | 
				
			||||
        <Delete Files="$(CppWinRTPlatformProjectionResponseFile)" />
 | 
				
			||||
    </Target>
 | 
				
			||||
 | 
				
			||||
    <!-- Build the platform projection from the winmds that ship with the platform in the Windows SDK -->
 | 
				
			||||
    <!-- Note that Condition is evaluated before DependsOnTargets are run -->
 | 
				
			||||
    <Target Name="CppWinRTMakePlatformProjection"
 | 
				
			||||
            Condition="'$(CppWinRTEnablePlatformProjection)' == 'true' AND '$(CppWinRTOverrideSDKReferences)' != 'true'"
 | 
				
			||||
            DependsOnTargets="CppWinRTResolveReferences;GetCppWinRTPlatformWinMDInputs;_CppWinRTMakePlatformProjectionDependencyCache;$(CppWinRTMakePlatformProjectionDependsOn)"
 | 
				
			||||
            Inputs="$(MSBuildAllProjects);@(CppWinRTPlatformWinMDInputs);@(CustomAdditionalPlatformWinMDInputs)"
 | 
				
			||||
            Outputs="$(CppWinRTPlatformProjectionResponseFile)">
 | 
				
			||||
        <PropertyGroup>
 | 
				
			||||
            <CppWinRTCommand>$(CppWinRTPath)cppwinrt %40"$(CppWinRTPlatformProjectionResponseFile)"</CppWinRTCommand>
 | 
				
			||||
        </PropertyGroup>
 | 
				
			||||
        <ItemGroup>
 | 
				
			||||
            <_CppwinrtInputs Remove="@(_CppwinrtInputs)"/>
 | 
				
			||||
            <_CppwinrtInputs Include="@(CppWinRTPlatformWinMDInputs)"/>
 | 
				
			||||
        </ItemGroup>
 | 
				
			||||
        <PropertyGroup>
 | 
				
			||||
            <_CppwinrtParameters>$(CppWinRTCommandVerbosity) $(CppWinRTParameters)</_CppwinrtParameters>
 | 
				
			||||
            <_CppwinrtParameters>$(_CppwinrtParameters) @(_CppwinrtInputs->'-in "%(WinMDPath)"', '
')</_CppwinrtParameters>
 | 
				
			||||
            <_CppwinrtParameters>$(_CppwinrtParameters) -out "$(GeneratedFilesDir)."</_CppwinrtParameters>
 | 
				
			||||
        </PropertyGroup>
 | 
				
			||||
 | 
				
			||||
        <!-- Always write the cppwinrt_plat.rsp file when the target runs, because the file is used as the output of this target. -->
 | 
				
			||||
        <WriteLinesToFile
 | 
				
			||||
            File="$(CppWinRTPlatformProjectionResponseFile)" Lines="$(_CppwinrtParameters)"
 | 
				
			||||
            Overwrite="true" />
 | 
				
			||||
 | 
				
			||||
        <Message Text="$(CppWinRTCommand)" Importance="$(CppWinRTVerbosity)" Condition="'@(_CppwinrtInputs)' != ''" />
 | 
				
			||||
        <Exec Command="$(CppWinRTCommand)" Condition="'@(_CppwinrtInputs)' != ''" />
 | 
				
			||||
 | 
				
			||||
        <!-- Clean the output file if the target failed to indicate it needs to be rebuild -->
 | 
				
			||||
        <OnError ExecuteTargets="_CppWinRTCleanMakePlatformProjectionOutputs" />
 | 
				
			||||
 | 
				
			||||
    </Target>
 | 
				
			||||
 | 
				
			||||
    <!--
 | 
				
			||||
    ============================================================
 | 
				
			||||
    Generate a file used to track C++/WinRT reference WinMD input dependencies between incremental build
 | 
				
			||||
    executions. This handles cases where items are added or removed and can't 
 | 
				
			||||
    otherwise be detected with timestamp comparisons. The file contains a hash of 
 | 
				
			||||
    the reference winmd inputs that are known to contribute to incremental build inconsistencies.
 | 
				
			||||
    NOTE: this is not used when building with older MSBuild versions.
 | 
				
			||||
    ============================================================
 | 
				
			||||
    -->
 | 
				
			||||
    <Target Name="_CppWinRTMakeReferenceProjectionDependencyCache"  Condition="'$(CppWinRTHasHashTask)' == 'true'" DependsOnTargets="CppWinRTResolveReferences">
 | 
				
			||||
        <ItemGroup>
 | 
				
			||||
            <CustomAdditionalReferenceWinMDInputs Include="$(IntDir)$(MSBuildProjectFile).cppwinrt_ref.cache" />
 | 
				
			||||
            <CppWinRTReferenceProjectionCache Include="@(CppWinRTDirectWinMDReferences)" />
 | 
				
			||||
            <CppWinRTReferenceProjectionCache Include="@(CppWinRTDynamicProjectWinMDReferences)" />
 | 
				
			||||
            <CppWinRTReferenceProjectionCache Include="@(CppWinRTPlatformWinMDReferences)" />
 | 
				
			||||
            <!-- No need to include properties here as those should be caught by having $(MSBuildAllProjects) as input to the target-->
 | 
				
			||||
        </ItemGroup>
 | 
				
			||||
 | 
				
			||||
        <Hash
 | 
				
			||||
          ItemsToHash="@(CppWinRTReferenceProjectionCache)"
 | 
				
			||||
          IgnoreCase="$([MSBuild]::ValueOrDefault(`$(CppWinRTReferenceProjectionCacheIgnoreCase)`, `true`))">
 | 
				
			||||
            <Output TaskParameter="HashResult" PropertyName="CppWinRTReferenceProjectionDependencyHash" />
 | 
				
			||||
        </Hash>
 | 
				
			||||
 | 
				
			||||
        <WriteLinesToFile Condition="!$(CppWinRTWriteOnlyWhenDifferent)"
 | 
				
			||||
            File="$(IntDir)$(MSBuildProjectFile).cppwinrt_ref.cache"
 | 
				
			||||
            Lines="$(CppWinRTReferenceProjectionDependencyHash)"
 | 
				
			||||
            Overwrite="true" />
 | 
				
			||||
        <WriteLinesToFile Condition="$(CppWinRTWriteOnlyWhenDifferent)"
 | 
				
			||||
            File="$(IntDir)$(MSBuildProjectFile).cppwinrt_ref.cache"
 | 
				
			||||
            Lines="$(CppWinRTReferenceProjectionDependencyHash)"
 | 
				
			||||
            Overwrite="true"
 | 
				
			||||
            WriteOnlyWhenDifferent="true" />
 | 
				
			||||
 | 
				
			||||
        <ItemGroup>
 | 
				
			||||
            <FileWrites Include="$(IntDir)$(MSBuildProjectFile).cppwinrt_ref.cache" />
 | 
				
			||||
        </ItemGroup>
 | 
				
			||||
    </Target>
 | 
				
			||||
 | 
				
			||||
    <Target Name="_CppWinRTCleanMakeReferenceProjectionOutputs">
 | 
				
			||||
        <Delete Files="$(CppWinRTReferenceProjectionResponseFile)" />
 | 
				
			||||
    </Target>
 | 
				
			||||
 | 
				
			||||
    <!--Build reference projection from WinMD project references and dynamic library project references-->
 | 
				
			||||
    <!-- Note that Condition is evaluated before DependsOnTargets are run -->
 | 
				
			||||
    <Target Name="CppWinRTMakeReferenceProjection"
 | 
				
			||||
            Condition="'@(CppWinRTDirectWinMDReferences)@(CppWinRTDynamicProjectWinMDReferences)' != '' AND '$(CppWinRTEnableReferenceProjection)' == 'true'"
 | 
				
			||||
            DependsOnTargets="CppWinRTResolveReferences;_CppWinRTMakeReferenceProjectionDependencyCache;$(CppWinRTMakeReferenceProjectionDependsOn)"
 | 
				
			||||
            Inputs="$(MSBuildAllProjects);@(CppWinRTDirectWinMDReferences);@(CppWinRTDynamicProjectWinMDReferences);@(CppWinRTPlatformWinMDReferences);@(CustomAdditionalReferenceWinMDInputs)"
 | 
				
			||||
            Outputs="$(CppWinRTReferenceProjectionResponseFile)">
 | 
				
			||||
        <PropertyGroup>
 | 
				
			||||
            <CppWinRTCommand>$(CppWinRTPath)cppwinrt %40"$(CppWinRTReferenceProjectionResponseFile)"</CppWinRTCommand>
 | 
				
			||||
        </PropertyGroup>
 | 
				
			||||
        <ItemGroup>
 | 
				
			||||
            <_CppwinrtRefInputs Remove="@(_CppwinrtRefInputs)"/>
 | 
				
			||||
            <_CppwinrtRefInputs Include="@(CppWinRTDirectWinMDReferences)"/>
 | 
				
			||||
            <_CppwinrtRefInputs Include="@(CppWinRTDynamicProjectWinMDReferences)"/>
 | 
				
			||||
            <_CppwinrtRefRefs Remove="@(_CppwinrtRefRefs)"/>
 | 
				
			||||
            <_CppwinrtRefRefs Include="@(CppWinRTPlatformWinMDReferences)"/>
 | 
				
			||||
        </ItemGroup>
 | 
				
			||||
        <PropertyGroup>
 | 
				
			||||
            <_CppwinrtParameters>$(CppWinRTCommandVerbosity) $(CppWinRTParameters)</_CppwinrtParameters>
 | 
				
			||||
            <_CppwinrtParameters>$(_CppwinrtParameters) @(_CppwinrtRefInputs->'-in "%(WinMDPath)"', '
')</_CppwinrtParameters>
 | 
				
			||||
            <_CppwinrtParameters>$(_CppwinrtParameters) @(_CppwinrtRefRefs->'-ref "%(WinMDPath)"', '
')</_CppwinrtParameters>
 | 
				
			||||
            <_CppwinrtParameters>$(_CppwinrtParameters) -out "$(GeneratedFilesDir)."</_CppwinrtParameters>
 | 
				
			||||
        </PropertyGroup>
 | 
				
			||||
 | 
				
			||||
        <!-- Always write the cppwinrt_ref.rsp file when the target runs, because the file is used as the output of this target. -->
 | 
				
			||||
        <WriteLinesToFile
 | 
				
			||||
            File="$(CppWinRTReferenceProjectionResponseFile)" Lines="$(_CppwinrtParameters)"
 | 
				
			||||
            Overwrite="true" />
 | 
				
			||||
 | 
				
			||||
        <Message Text="$(CppWinRTCommand)" Importance="$(CppWinRTVerbosity)" Condition="'@(_CppwinrtRefInputs)' != ''" />
 | 
				
			||||
        <Exec Command="$(CppWinRTCommand)" Condition="'@(_CppwinrtRefInputs)' != ''" />
 | 
				
			||||
 | 
				
			||||
        <!-- Clean the output file if the target failed to indicate it needs to be rebuild -->
 | 
				
			||||
        <OnError ExecuteTargets="_CppWinRTCleanMakeReferenceProjectionOutputs" />
 | 
				
			||||
 | 
				
			||||
    </Target>
 | 
				
			||||
 | 
				
			||||
    <!--
 | 
				
			||||
    ============================================================
 | 
				
			||||
    Generate a file used to track C++/WinRT reference WinMD input dependencies between incremental build
 | 
				
			||||
    executions. This handles cases where items are added or removed and can't 
 | 
				
			||||
    otherwise be detected with timestamp comparisons. The file contains a hash of 
 | 
				
			||||
    the reference winmd inputs that are known to contribute to incremental build inconsistencies.
 | 
				
			||||
    NOTE: this is not used when building with older MSBuild versions.
 | 
				
			||||
    ============================================================
 | 
				
			||||
    -->
 | 
				
			||||
    <Target Name="_CppWinRTMakeComponentProjectionDependencyCache" Condition="'$(CppWinRTHasHashTask)' == 'true'" DependsOnTargets="CppWinRTResolveReferences">
 | 
				
			||||
        <ItemGroup>
 | 
				
			||||
            <CustomAdditionalComponentWinMDInputs Include="$(IntDir)$(MSBuildProjectFile).cppwinrt_comp.cache" />
 | 
				
			||||
            <CppWinRTComponentProjectionCache Include="@(CppWinRTMdMergeInputs)" />
 | 
				
			||||
            <CppWinRTComponentProjectionCache Include="@(CppWinRTStaticProjectWinMDReferences)" />
 | 
				
			||||
            <CppWinRTComponentProjectionCache Include="@(CppWinRTDirectWinMDReferences)"/>
 | 
				
			||||
            <CppWinRTComponentProjectionCache Include="@(CppWinRTDynamicProjectWinMDReferences)"/>
 | 
				
			||||
            <CppWinRTComponentProjectionCache Include="@(CppWinRTPlatformWinMDReferences)"/>
 | 
				
			||||
            <!-- No need to include properties here as those should be caught by having $(MSBuildAllProjects) as input to the target-->
 | 
				
			||||
        </ItemGroup>
 | 
				
			||||
 | 
				
			||||
        <Hash
 | 
				
			||||
          ItemsToHash="@(CppWinRTComponentProjectionCache)"
 | 
				
			||||
          IgnoreCase="$([MSBuild]::ValueOrDefault(`$(CppWinRTComponentProjectionCacheIgnoreCase)`, `true`))">
 | 
				
			||||
            <Output TaskParameter="HashResult" PropertyName="CppWinRTComponentProjectionDependencyHash" />
 | 
				
			||||
        </Hash>
 | 
				
			||||
 | 
				
			||||
        <WriteLinesToFile Condition="!$(CppWinRTWriteOnlyWhenDifferent)"
 | 
				
			||||
            File="$(IntDir)$(MSBuildProjectFile).cppwinrt_comp.cache"
 | 
				
			||||
            Lines="$(CppWinRTComponentProjectionDependencyHash)"
 | 
				
			||||
            Overwrite="true" />
 | 
				
			||||
        <WriteLinesToFile Condition="$(CppWinRTWriteOnlyWhenDifferent)"
 | 
				
			||||
            File="$(IntDir)$(MSBuildProjectFile).cppwinrt_comp.cache"
 | 
				
			||||
            Lines="$(CppWinRTComponentProjectionDependencyHash)"
 | 
				
			||||
            Overwrite="true"
 | 
				
			||||
            WriteOnlyWhenDifferent="true" />
 | 
				
			||||
 | 
				
			||||
        <ItemGroup>
 | 
				
			||||
            <FileWrites Include="$(IntDir)$(MSBuildProjectFile).cppwinrt_comp.cache" />
 | 
				
			||||
        </ItemGroup>
 | 
				
			||||
    </Target>
 | 
				
			||||
 | 
				
			||||
    <Target Name="_CppWinRTCleanMakeComponentProjectionOutputs">
 | 
				
			||||
        <Delete Files="$(CppWinRTComponentProjectionResponseFile)" />
 | 
				
			||||
    </Target>
 | 
				
			||||
 | 
				
			||||
    <!--Build component projection from project WinMD file and static library project references-->
 | 
				
			||||
    <!-- Note that Condition is evaluated before DependsOnTargets are run -->
 | 
				
			||||
    <Target Name="CppWinRTMakeComponentProjection"
 | 
				
			||||
            Condition="'$(CppWinRTEnableComponentProjection)' == 'true'"
 | 
				
			||||
            DependsOnTargets="CppWinRTResolveReferences;GetCppWinRTMdMergeInputs;_CppWinRTMakeComponentProjectionDependencyCache;$(CppWinRTMakeComponentProjectionDependsOn)"
 | 
				
			||||
            Inputs="$(MSBuildAllProjects);@(CppWinRTMdMergeInputs);@(CppWinRTStaticProjectWinMDReferences);@(CustomAdditionalComponentWinMDInputs)"
 | 
				
			||||
            Outputs="$(CppWinRTComponentProjectionResponseFile)">
 | 
				
			||||
        <PropertyGroup>
 | 
				
			||||
            <_PCH>@(ClCompile->Metadata('PrecompiledHeaderFile')->Distinct())</_PCH>
 | 
				
			||||
        </PropertyGroup>
 | 
				
			||||
        <Error Condition="('$(CppWinRTOverrideSDKReferences)' != 'true') and ('$(TargetPlatformVersion)' < '10.0.17709.0') and ('$(_PCH)' != 'pch.h')"
 | 
				
			||||
            Text="Please retarget to 10.0.17709.0 or later, or rename your PCH to 'pch.h'."/>
 | 
				
			||||
        <PropertyGroup Condition="('$(CppWinRTOverrideSDKReferences)' == 'true') or ('$(TargetPlatformVersion)' > '10.0.17708.0')">
 | 
				
			||||
            <CppWinRTUsePrefixes Condition="'$(CppWinRTUsePrefixes)' == ''">true</CppWinRTUsePrefixes>
 | 
				
			||||
            <CppWinRTPrecompiledHeader Condition="'$(CppWinRTPrecompiledHeader)' == ''">$(_PCH)</CppWinRTPrecompiledHeader>
 | 
				
			||||
        </PropertyGroup>
 | 
				
			||||
        <PropertyGroup>
 | 
				
			||||
            <CppWinRTCommandUsePrefixes Condition="'$(CppWinRTUsePrefixes)' == 'true'">-prefix</CppWinRTCommandUsePrefixes>
 | 
				
			||||
            <CppWinRTCommandPrecompiledHeader Condition="'$(CppWinRTPrecompiledHeader)' != ''">-pch $(CppWinRTPrecompiledHeader)</CppWinRTCommandPrecompiledHeader>
 | 
				
			||||
            <CppWinRTCommand>$(CppWinRTPath)cppwinrt %40"$(CppWinRTComponentProjectionResponseFile)"</CppWinRTCommand>
 | 
				
			||||
        </PropertyGroup>
 | 
				
			||||
        <ItemGroup>
 | 
				
			||||
            <!-- use the output from MdMerge directly to generate the component projection. -->
 | 
				
			||||
            <_MdMergedOutput Remove="@(_MdMergedOutput)"/>
 | 
				
			||||
            <_MdMergedOutput Include="$(CppWinRTMergedDir)*.winmd"/>
 | 
				
			||||
            <_CppwinrtCompInputs Remove="@(_CppwinrtCompInputs)"/>
 | 
				
			||||
            <_CppwinrtCompInputs Include="@(_MdMergedOutput)">
 | 
				
			||||
                <WinMDPath>%(_MdMergedOutput.FullPath)</WinMDPath>
 | 
				
			||||
            </_CppwinrtCompInputs>
 | 
				
			||||
            <!-- If this is a static library with static library references,
 | 
				
			||||
                 pass the individual static library references to cppwinrt.exe 
 | 
				
			||||
                 for the component projection as they are not merged.-->
 | 
				
			||||
            <_CppwinrtCompInputs Include="@(CppWinRTStaticProjectWinMDReferences)" Condition="'$(ConfigurationType)' == 'StaticLibrary'">
 | 
				
			||||
                <WinMDPath>%(CppWinRTStaticProjectWinMDReferences.FullPath)</WinMDPath>
 | 
				
			||||
            </_CppwinrtCompInputs>
 | 
				
			||||
            <_CppwinrtCompRefs Remove="@(_CppwinrtCompRefs)"/>
 | 
				
			||||
            <_CppwinrtCompRefs Include="@(CppWinRTDirectWinMDReferences)"/>
 | 
				
			||||
            <_CppwinrtCompRefs Include="@(CppWinRTDynamicProjectWinMDReferences)"/>
 | 
				
			||||
            <_CppwinrtCompRefs Include="@(CppWinRTPlatformWinMDReferences)"/>
 | 
				
			||||
        </ItemGroup>
 | 
				
			||||
        <PropertyGroup>
 | 
				
			||||
            <_CppwinrtParameters>$(CppWinRTCommandVerbosity) $(CppWinRTParameters) -overwrite -name $(RootNamespace) $(CppWinRTCommandPrecompiledHeader) $(CppWinRTCommandUsePrefixes) -comp "$(GeneratedFilesDir)sources"</_CppwinrtParameters>
 | 
				
			||||
            <_CppwinrtParameters Condition="'$(CppWinRTOptimized)'=='true'">$(_CppwinrtParameters) -opt</_CppwinrtParameters>
 | 
				
			||||
            <_CppwinrtParameters>$(_CppwinrtParameters) @(_CppwinrtCompInputs->'-in "%(WinMDPath)"', '
')</_CppwinrtParameters>
 | 
				
			||||
            <_CppwinrtParameters>$(_CppwinrtParameters) @(_CppwinrtCompRefs->'-ref "%(WinMDPath)"', '
')</_CppwinrtParameters>
 | 
				
			||||
            <_CppwinrtParameters>$(_CppwinrtParameters) -out "$(GeneratedFilesDir)."</_CppwinrtParameters>
 | 
				
			||||
        </PropertyGroup>
 | 
				
			||||
 | 
				
			||||
        <!-- Always write the cppwinrt_comp.rsp file when the target runs, because the file is used as the output of this target. -->
 | 
				
			||||
        <WriteLinesToFile
 | 
				
			||||
            File="$(CppWinRTComponentProjectionResponseFile)" Lines="$(_CppwinrtParameters)"
 | 
				
			||||
            Overwrite="true" />
 | 
				
			||||
 | 
				
			||||
        <Message Text="$(CppWinRTCommand)" Importance="$(CppWinRTVerbosity)" Condition="'@(_CppwinrtCompInputs)' != ''"/>
 | 
				
			||||
        <Exec Command="$(CppWinRTCommand)" Condition="'@(_CppwinrtCompInputs)' != ''"/>
 | 
				
			||||
 | 
				
			||||
        <!-- Clean the output file if the target failed to indicate it needs to be rebuild -->
 | 
				
			||||
        <OnError ExecuteTargets="_CppWinRTCleanMakeComponentProjectionOutputs" />
 | 
				
			||||
    </Target>
 | 
				
			||||
 | 
				
			||||
    <Target Name="CppWinRTMakeProjections" DependsOnTargets="CppWinRTResolveReferences;CppWinRTMakePlatformProjection;CppWinRTMakeReferenceProjection;CppWinRTMakeComponentProjection;$(CppWinRTMakeProjectionsDependsOn)" />
 | 
				
			||||
 | 
				
			||||
    <!--Add references to all merged project WinMD files for Xaml Compiler-->
 | 
				
			||||
    <Target Name="CppWinRTAddXamlReferences"
 | 
				
			||||
            Condition="'@(Page)@(ApplicationDefinition)' != '' and '$(XamlLanguage)' == 'CppWinRT'"
 | 
				
			||||
            DependsOnTargets="$(CppWinRTAddXamlReferencesDependsOn)">
 | 
				
			||||
        <ItemGroup>
 | 
				
			||||
            <XamlReferencesToCompile Include="$(OutDir)*.winmd" />
 | 
				
			||||
        </ItemGroup>
 | 
				
			||||
    </Target>
 | 
				
			||||
 | 
				
			||||
    <!--Clear merged assembly and set local assembly for Xaml Compiler.
 | 
				
			||||
        (Note: this can be removed when CppWinRT references are removed from the Xaml targets file.)-->
 | 
				
			||||
    <Target Name="CppWinRTSetXamlLocalAssembly"
 | 
				
			||||
            Condition="'@(Page)@(ApplicationDefinition)' != '' and '$(XamlLanguage)' == 'CppWinRT'"
 | 
				
			||||
            DependsOnTargets="$(CppWinRTSetXamlLocalAssemblyDependsOn)">
 | 
				
			||||
        <PropertyGroup>
 | 
				
			||||
            <CppWinRTMetadataAssembly></CppWinRTMetadataAssembly>
 | 
				
			||||
            <XamlLocalAssembly>$(CppWinRTProjectWinMD)</XamlLocalAssembly>
 | 
				
			||||
        </PropertyGroup>
 | 
				
			||||
    </Target>
 | 
				
			||||
 | 
				
			||||
    <!--Append any additional item metadata after all default and project settings have been applied-->
 | 
				
			||||
    <ItemDefinitionGroup>
 | 
				
			||||
        <ClCompile>
 | 
				
			||||
            <AdditionalOptions>%(AdditionalOptions) /bigobj</AdditionalOptions>
 | 
				
			||||
            <AdditionalOptions Condition="'%(ClCompile.LanguageStandard)' == 'stdcpp17'">%(AdditionalOptions) /await</AdditionalOptions>
 | 
				
			||||
            <AdditionalIncludeDirectories>%(AdditionalIncludeDirectories);$(GeneratedFilesDir)</AdditionalIncludeDirectories>
 | 
				
			||||
        </ClCompile>
 | 
				
			||||
        <Midl Condition="'$(CppWinRTModernIDL)' != 'false'">
 | 
				
			||||
            <AdditionalMetadataDirectories Condition="'%(AdditionalMetadataDirectories)' == '' And '$(WindowsSDK_MetadataFoundationPath)' != ''">$(WindowsSDK_MetadataFoundationPath);%(AdditionalMetadataDirectories)</AdditionalMetadataDirectories>
 | 
				
			||||
            <AdditionalMetadataDirectories Condition="'%(AdditionalMetadataDirectories)' == '' And '$(WindowsSDK_MetadataFoundationPath)' == ''">$(WindowsSDK_MetadataPath);%(AdditionalMetadataDirectories)</AdditionalMetadataDirectories>
 | 
				
			||||
            <AdditionalOptions>%(AdditionalOptions) /nomidl</AdditionalOptions>
 | 
				
			||||
        </Midl>
 | 
				
			||||
        <Link>
 | 
				
			||||
            <AdditionalDependencies Condition="'$(CppWinRTLibs)' != 'false'">%(AdditionalDependencies);WindowsApp.lib</AdditionalDependencies>
 | 
				
			||||
            <AdditionalDependencies Condition="'$(CppWinRTFastAbi)'=='true'">%(AdditionalDependencies);$(CppWinRTPackageDir)build\native\lib\$(Platform)\cppwinrt_fast_forwarder.lib</AdditionalDependencies>
 | 
				
			||||
        </Link>
 | 
				
			||||
    </ItemDefinitionGroup>
 | 
				
			||||
 | 
				
			||||
</Project>
 | 
				
			||||
											
												Binary file not shown.
											
										
									
								
											
												Binary file not shown.
											
										
									
								
											
												Binary file not shown.
											
										
									
								@ -1,22 +0,0 @@
 | 
				
			||||
========================================================================
 | 
				
			||||
The Microsoft.Windows.CppWinRT NuGet package automatically generates C++/WinRT projection headers, 
 | 
				
			||||
enabling you to both consume and produce Windows Runtime classes.
 | 
				
			||||
========================================================================
 | 
				
			||||
 | 
				
			||||
C++/WinRT detects Windows metadata required by the project, from:
 | 
				
			||||
* Platform winmd files in the SDK (both MSI and NuGet)
 | 
				
			||||
* NuGet package references containing winmd files
 | 
				
			||||
* Other project references producing winmd files
 | 
				
			||||
* Raw winmd file references
 | 
				
			||||
* Interface definition language (IDL) files in the project 
 | 
				
			||||
 | 
				
			||||
For any winmd file discovered above, C++/WinRT creates reference (consuming) projection headers.  
 | 
				
			||||
Client code can simply #include these headers, which are created in the generated files directory (see below).
 | 
				
			||||
 | 
				
			||||
For any IDL file contained in the project, C++/WinRT creates component (producing) projection headers.  
 | 
				
			||||
In addition, C++/WinRT generates templates and skeleton implementations for each runtime class, under the Generated Files directory.
 | 
				
			||||
  
 | 
				
			||||
========================================================================
 | 
				
			||||
For more information, visit:
 | 
				
			||||
https://github.com/Microsoft/cppwinrt/tree/master/nuget
 | 
				
			||||
========================================================================
 | 
				
			||||
					Loading…
					
					
				
		Reference in new issue