Skip to content

Commit

Permalink
Create C++ Custom Visualizer sample (microsoft#42)
Browse files Browse the repository at this point in the history
This commit provides an example C++ custom visualizer. See /CppCustomVisualizer/README.md for more information.
  • Loading branch information
gregg-miskelly authored Jan 25, 2019
1 parent ca1ed4c commit 0942899
Show file tree
Hide file tree
Showing 33 changed files with 1,627 additions and 5 deletions.
14 changes: 10 additions & 4 deletions BuildAndTest.proj
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,9 @@
<PropertyGroup>
<Configuration Condition=" '$(Configuration)'=='' ">Debug</Configuration>
<OutDir Condition=" '$(OutDir)'=='' ">$(MSBuildThisFileDirectory)bin\$(Configuration)\</OutDir>
<NuGetToolPath Condition="'$(NuGetToolPath)'==''">$(MSBuildThisFileDirectory)\NuGet\NuGet.exe</NuGetToolPath>
<IrisDir Condition="'$(IrisPath)'==''">$(MSBuildThisFileDirectory)\Iris\</IrisDir>
<HelloWorldDir Condition="'$(HelloWorldPath)'==''">$(MSBuildThisFileDirectory)\HelloWorld\</HelloWorldDir>
<NuGetToolPath Condition="'$(NuGetToolPath)'==''">$(MSBuildThisFileDirectory)NuGet\NuGet.exe</NuGetToolPath>
<IrisDir Condition="'$(IrisPath)'==''">$(MSBuildThisFileDirectory)Iris\</IrisDir>
<HelloWorldDir Condition="'$(HelloWorldPath)'==''">$(MSBuildThisFileDirectory)HelloWorld\</HelloWorldDir>

<TargetsToRun>Build;Test</TargetsToRun>
</PropertyGroup>
Expand Down Expand Up @@ -73,9 +73,15 @@
</UsingTask>

<ItemGroup>
<Solution Include="$(IrisDir)Iris.sln;$(HelloWorldDir)**\*.sln">
<Solution Include="$(IrisDir)Iris.sln;$(HelloWorldDir)cs\HelloWorld.sln">
<AdditionalProperties>Configuration=$(Configuration)</AdditionalProperties>
</Solution>
<Solution Include="$(HelloWorldDir)cpp\HelloWorld.sln">
<AdditionalProperties>Configuration=$(Configuration);Platform=Win32</AdditionalProperties>
</Solution>
<Solution Include="$(MSBuildThisFileDirectory)CppCustomVisualizer\CppCustomVisualizer.sln">
<AdditionalProperties>Configuration=$(Configuration);Platform=x86</AdditionalProperties>
</Solution>
</ItemGroup>

<Target Name="DownloadNuGet"
Expand Down
40 changes: 40 additions & 0 deletions CppCustomVisualizer/Cpp.props
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">

<!-- Copyright (c) Microsoft. All rights reserved.
Licensed under the MIT license. See LICENSE file in the project root for full license information.
This file sets PlatformToolset/WindowsTargetPlatformVersion to allow this project to compile with multiple versions
of Visual Studio.
-->

<PropertyGroup>
<PlatformToolset>v140</PlatformToolset>
<PlatformToolset Condition="'$(VisualStudioVersion)' == '15.0'">v141</PlatformToolset>
<PlatformToolset Condition="'$(VisualStudioVersion)' == '16.0'">v142</PlatformToolset>

<!--In Visual Studio 16, use the default Windows10 SDK-->
<WindowsTargetPlatformVersion Condition="'$(WindowsTargetPlatformVersion)'=='' and '$(VisualStudioVersion)' == '16.0'">10.0</WindowsTargetPlatformVersion>
</PropertyGroup>

<!--In Dev14/Dev15, we need to set 'WindowsTargetPlatformVersion' to an exact build number. -->
<PropertyGroup Condition="'$(WindowsTargetPlatformVersion)'==''">
<!--Try and find an SDK which is installed-->
<WinSDKRoot>$(WindowsSdkDir)</WinSDKRoot>
<WinSDKRoot Condition="'$(WinSDKRoot)' == ''">$(Registry:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SDKs\Windows\v10.0@InstallationFolder)</WinSDKRoot>
<WinSDKRoot Condition="'$(WinSDKRoot)' == ''">$(Registry:HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Microsoft SDKs\Windows\v10.0@InstallationFolder)</WinSDKRoot>
<WinSDKRoot Condition="'$(WinSDKRoot)'==''">$(MSBuildProgramFiles32)\Windows Kits\10\</WinSDKRoot>

<WindowsTargetPlatformVersion Condition="'$(WindowsTargetPlatformVersion)'=='' and Exists('$(WinSDKRoot)Include\10.0.17763.0\um\WinBase.h')">10.0.17763.0</WindowsTargetPlatformVersion>
<WindowsTargetPlatformVersion Condition="'$(WindowsTargetPlatformVersion)'=='' and Exists('$(WinSDKRoot)Include\10.0.17134.0\um\WinBase.h')">10.0.17134.0</WindowsTargetPlatformVersion>
<WindowsTargetPlatformVersion Condition="'$(WindowsTargetPlatformVersion)'=='' and Exists('$(WinSDKRoot)Include\10.0.16299.0\um\WinBase.h')">10.0.16299.0</WindowsTargetPlatformVersion>
<WindowsTargetPlatformVersion Condition="'$(WindowsTargetPlatformVersion)'=='' and Exists('$(WinSDKRoot)Include\10.0.15063.0\um\WinBase.h')">10.0.15063.0</WindowsTargetPlatformVersion>
<WindowsTargetPlatformVersion Condition="'$(WindowsTargetPlatformVersion)'=='' and Exists('$(WinSDKRoot)Include\10.0.14393.0\um\WinBase.h')">10.0.14393.0</WindowsTargetPlatformVersion>
<WindowsTargetPlatformVersion Condition="'$(WindowsTargetPlatformVersion)'=='' and Exists('$(WinSDKRoot)Include\10.0.10586.0\um\WinBase.h')">10.0.10586.0</WindowsTargetPlatformVersion>
<WindowsTargetPlatformVersion Condition="'$(WindowsTargetPlatformVersion)'=='' and Exists('$(WinSDKRoot)Include\10.0.10240.0\um\WinBase.h')">10.0.10240.0</WindowsTargetPlatformVersion>

<!--Fall back to the default 15.9 version if nothing else is found.-->
<WindowsTargetPlatformVersion Condition="'$(WindowsTargetPlatformVersion)'==''">10.0.17763.0"</WindowsTargetPlatformVersion>
</PropertyGroup>

<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
</Project>
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<ChildProcessDebuggingSettings IsEnabled="true" xmlns="http://schemas.microsoft.com/vstudio/ChildProcessDebuggingSettings/2014">
<DefaultRule Attach="false" />
<Rule IsEnabled="true" ProcessName="msvsmon.exe" EngineFilter="[inherit]" />
</ChildProcessDebuggingSettings>
48 changes: 48 additions & 0 deletions CppCustomVisualizer/CppCustomVisualizer.sln
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 16
VisualStudioVersion = 16.0.28516.95
MinimumVisualStudioVersion = 10.0.40219.1
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{1375CB4F-7AD1-4269-927D-54AA9052B9BF}"
ProjectSection(SolutionItems) = preProject
Cpp.props = Cpp.props
README.md = README.md
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "vsix", "vsix\vsix.vcxproj", "{0E22D156-940B-431D-945D-51B7DFA08AEF}"
ProjectSection(ProjectDependencies) = postProject
{F7062FB7-42BB-4FEF-8E9B-2F65FFC7EAFA} = {F7062FB7-42BB-4FEF-8E9B-2F65FFC7EAFA}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "CppCustomVisualizer", "dll\CppCustomVisualizer.vcxproj", "{F7062FB7-42BB-4FEF-8E9B-2F65FFC7EAFA}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|x86 = Debug|x86
Debug|x64 = Debug|x64
Release|x86 = Release|x86
Release|x64 = Release|x64
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{0E22D156-940B-431D-945D-51B7DFA08AEF}.Debug|x86.ActiveCfg = Debug|Win32
{0E22D156-940B-431D-945D-51B7DFA08AEF}.Debug|x86.Build.0 = Debug|Win32
{0E22D156-940B-431D-945D-51B7DFA08AEF}.Debug|x64.ActiveCfg = Debug|Win32
{0E22D156-940B-431D-945D-51B7DFA08AEF}.Release|x86.ActiveCfg = Release|Win32
{0E22D156-940B-431D-945D-51B7DFA08AEF}.Release|x86.Build.0 = Release|Win32
{0E22D156-940B-431D-945D-51B7DFA08AEF}.Release|x64.ActiveCfg = Release|Win32
{F7062FB7-42BB-4FEF-8E9B-2F65FFC7EAFA}.Debug|x86.ActiveCfg = Debug|Win32
{F7062FB7-42BB-4FEF-8E9B-2F65FFC7EAFA}.Debug|x86.Build.0 = Debug|Win32
{F7062FB7-42BB-4FEF-8E9B-2F65FFC7EAFA}.Debug|x64.ActiveCfg = Debug|x64
{F7062FB7-42BB-4FEF-8E9B-2F65FFC7EAFA}.Debug|x64.Build.0 = Debug|x64
{F7062FB7-42BB-4FEF-8E9B-2F65FFC7EAFA}.Release|x86.ActiveCfg = Release|Win32
{F7062FB7-42BB-4FEF-8E9B-2F65FFC7EAFA}.Release|x86.Build.0 = Release|Win32
{F7062FB7-42BB-4FEF-8E9B-2F65FFC7EAFA}.Release|x64.ActiveCfg = Release|x64
{F7062FB7-42BB-4FEF-8E9B-2F65FFC7EAFA}.Release|x64.Build.0 = Release|x64
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {F7958AE6-3B1E-4AD4-81CD-C64BFA61D418}
EndGlobalSection
EndGlobal
15 changes: 15 additions & 0 deletions CppCustomVisualizer/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
## C/C++ Custom Visualizer
This directory contains an example C/C++ Custom Visualizer.

## What is a Custom Visualizer?
The Visual Studio C/C++ Expression Evaluator allows customization of the display of variables in
the debugger based on the type of that variable (example: change the way CExampleClass variables
are displayed) using .natvis files. Natvis files add rules to format a type either declaratively or
by running custom code in the debugger. This custom code is called a Custom Visualizer. Most of
the time as it easier and much less error prone to use the declarative approach. But
Custom Visualizers are useful when formatting a type is too complicated to be done declaratively.

Natvis documentation can be found on [docs.microsoft.com](https://docs.microsoft.com/en-us/visualstudio/debugger/create-custom-views-of-native-objects).

## How to use this sample
More information about this sample can be found in the [Wiki for this project]https://github.com/Microsoft/ConcordExtensibilitySamples/wiki/Cpp-Custom-Visualizer-Sample).
42 changes: 42 additions & 0 deletions CppCustomVisualizer/TargetApp/TargetApp.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
// Copyright (c) Microsoft. All rights reserved.
// Licensed under the MIT license. See LICENSE file in the project root for full license information.

// TargetApp.cpp : Example application which will be debuggeed

#include <iostream>
#include <windows.h>

class MyClass
{
const FILETIME m_fileTime;
const int m_anotherField;

public:
MyClass(const FILETIME& ft, int anotherField) :
m_fileTime(ft),
m_anotherField(anotherField)
{
}
};

int wmain(int argc, WCHAR* argv[])
{
FILETIME creationTime;
HANDLE hFile = CreateFile(argv[0], GENERIC_READ, FILE_SHARE_READ | FILE_SHARE_WRITE, nullptr, OPEN_EXISTING, 0, nullptr);
if (hFile == INVALID_HANDLE_VALUE)
return -1;

if (!GetFileTime(hFile, &creationTime, nullptr, nullptr))
return -1;

FILETIME* pPointerTest1 = &creationTime;
FILETIME* pPointerTest2 = nullptr;
MyClass c(creationTime, 12);

FILETIME FTZero = {};

__debugbreak(); // program will stop here. Evaluate 'creationTime' and 'pPointerTest' in the locals or watch window.
std::cout << "Test complete\n";

return 0;
}
31 changes: 31 additions & 0 deletions CppCustomVisualizer/TargetApp/TargetApp.sln
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 16
VisualStudioVersion = 16.0.28516.95
MinimumVisualStudioVersion = 10.0.40219.1
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "TargetApp", "TargetApp.vcxproj", "{CFE3A899-F357-4721-B717-9BB5F6A108E3}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|x64 = Debug|x64
Debug|x86 = Debug|x86
Release|x64 = Release|x64
Release|x86 = Release|x86
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{CFE3A899-F357-4721-B717-9BB5F6A108E3}.Debug|x64.ActiveCfg = Debug|x64
{CFE3A899-F357-4721-B717-9BB5F6A108E3}.Debug|x64.Build.0 = Debug|x64
{CFE3A899-F357-4721-B717-9BB5F6A108E3}.Debug|x86.ActiveCfg = Debug|Win32
{CFE3A899-F357-4721-B717-9BB5F6A108E3}.Debug|x86.Build.0 = Debug|Win32
{CFE3A899-F357-4721-B717-9BB5F6A108E3}.Release|x64.ActiveCfg = Release|x64
{CFE3A899-F357-4721-B717-9BB5F6A108E3}.Release|x64.Build.0 = Release|x64
{CFE3A899-F357-4721-B717-9BB5F6A108E3}.Release|x86.ActiveCfg = Release|Win32
{CFE3A899-F357-4721-B717-9BB5F6A108E3}.Release|x86.Build.0 = Release|Win32
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {D847E1DD-8E07-4838-B494-8508FF6A0BF0}
EndGlobalSection
EndGlobal
154 changes: 154 additions & 0 deletions CppCustomVisualizer/TargetApp/TargetApp.vcxproj
Original file line number Diff line number Diff line change
@@ -0,0 +1,154 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|Win32">
<Configuration>Release</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|x64">
<Configuration>Debug</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|x64">
<Configuration>Release</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup Label="Globals">
<VCProjectVersion>15.0</VCProjectVersion>
<ProjectGuid>{CFE3A899-F357-4721-B717-9BB5F6A108E3}</ProjectGuid>
<Keyword>Win32Proj</Keyword>
<RootNamespace>TargetApp</RootNamespace>
</PropertyGroup>
<Import Project="..\Cpp.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<WholeProgramOptimization>true</WholeProgramOptimization>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<WholeProgramOptimization>true</WholeProgramOptimization>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
</ImportGroup>
<ImportGroup Label="Shared">
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<LinkIncremental>true</LinkIncremental>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<LinkIncremental>true</LinkIncremental>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<LinkIncremental>false</LinkIncremental>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<LinkIncremental>false</LinkIncremental>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ClCompile>
<PrecompiledHeader>
</PrecompiledHeader>
<WarningLevel>Level3</WarningLevel>
<Optimization>Disabled</Optimization>
<SDLCheck>true</SDLCheck>
<PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ConformanceMode>true</ConformanceMode>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<ClCompile>
<PrecompiledHeader>
</PrecompiledHeader>
<WarningLevel>Level3</WarningLevel>
<Optimization>Disabled</Optimization>
<SDLCheck>true</SDLCheck>
<PreprocessorDefinitions>_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ConformanceMode>true</ConformanceMode>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<ClCompile>
<PrecompiledHeader>
</PrecompiledHeader>
<WarningLevel>Level3</WarningLevel>
<Optimization>MaxSpeed</Optimization>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<SDLCheck>true</SDLCheck>
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ConformanceMode>true</ConformanceMode>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
<GenerateDebugInformation>true</GenerateDebugInformation>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<ClCompile>
<PrecompiledHeader>
</PrecompiledHeader>
<WarningLevel>Level3</WarningLevel>
<Optimization>MaxSpeed</Optimization>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<SDLCheck>true</SDLCheck>
<PreprocessorDefinitions>NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ConformanceMode>true</ConformanceMode>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
<GenerateDebugInformation>true</GenerateDebugInformation>
</Link>
</ItemDefinitionGroup>
<ItemGroup>
<ClCompile Include="TargetApp.cpp" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
</Project>
22 changes: 22 additions & 0 deletions CppCustomVisualizer/TargetApp/TargetApp.vcxproj.filters
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<Filter Include="Source Files">
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
<Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
</Filter>
<Filter Include="Header Files">
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
<Extensions>h;hh;hpp;hxx;hm;inl;inc;ipp;xsd</Extensions>
</Filter>
<Filter Include="Resource Files">
<UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
<Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
</Filter>
</ItemGroup>
<ItemGroup>
<ClCompile Include="TargetApp.cpp">
<Filter>Source Files</Filter>
</ClCompile>
</ItemGroup>
</Project>
Loading

0 comments on commit 0942899

Please sign in to comment.