Przeglądaj źródła

Add CL, LIB, Link, MASM, RC flag json

Adding flag json files generated from MSVC xml files.

python cmConvertMSBuildXMLToJSON.py -t v10 "...\MSBuild\Microsoft.Cpp\v4.0\1033\cl.xml"
python cmConvertMSBuildXMLToJSON.py -t v11 "c:\...\MSBuild\Microsoft.Cpp\v4.0\V110\1033\cl.xml"
python cmConvertMSBuildXMLToJSON.py -t v12 "c:\...\MSBuild\Microsoft.Cpp\v4.0\V120\1033\cl.xml"
python cmConvertMSBuildXMLToJSON.py -t v140 "c:\...\MSBuild\Microsoft.Cpp\v4.0\V140\1033\cl.xml"
python cmConvertMSBuildXMLToJSON.py -t v141 "C:\...\Common7\IDE\VC\VCTargets"\1033\cl.xml"

python cmConvertMSBuildXMLToJSON.py -t v10 "c:\...\MSBuild\Microsoft.Cpp\v4.0\1033\rc.xml
python cmConvertMSBuildXMLToJSON.py -t v11 "c:\...\MSBuild\Microsoft.Cpp\v4.0\v110\1033\rc.xml
python cmConvertMSBuildXMLToJSON.py -t v12 "c:\...\MSBuild\Microsoft.Cpp\v4.0\v120\1033\rc.xml
python cmConvertMSBuildXMLToJSON.py -t v14 "c:\...\MSBuild\Microsoft.Cpp\v4.0\v140\1033\rc.xml

python cmConvertMSBuildXMLToJSON.py -t v10 "c:\...\MSBuild\Microsoft.Cpp\v4.0\1033\lib.xml
python cmConvertMSBuildXMLToJSON.py -t v11 "c:\...\MSBuild\Microsoft.Cpp\v4.0\v110\1033\lib.xml
python cmConvertMSBuildXMLToJSON.py -t v12 "c:\...\MSBuild\Microsoft.Cpp\v4.0\v120\1033\lib.xml
python cmConvertMSBuildXMLToJSON.py -t v14 "c:\...\MSBuild\Microsoft.Cpp\v4.0\v140\1033\lib.xml

python cmConvertMSBuildXMLToJSON.py -t v10 "c:\...\MSBuild\Microsoft.Cpp\v4.0\1033\link.xml"
python cmConvertMSBuildXMLToJSON.py -t v11 "c:\...\MSBuild\Microsoft.Cpp\v4.0\V110\1033\link.xml"
python cmConvertMSBuildXMLToJSON.py -t v12 "c:\...\MSBuild\Microsoft.Cpp\v4.0\V120\1033\link.xml"
python cmConvertMSBuildXMLToJSON.py -t v140 "c:\...\MSBuild\Microsoft.Cpp\v4.0\V140\1033\link.xml"
python cmConvertMSBuildXMLToJSON.py -t v141 "C:\...\Common7\IDE\VC\VCTargets"\1033\link.xml"

python cmConvertMSBuildXMLToJSON.py -t v10 "c:\...\MSBuild\Microsoft.Cpp\v4.0\BuildCustomizations\masm.xml"
python cmConvertMSBuildXMLToJSON.py -t v11 "c:\...\MSBuild\Microsoft.Cpp\v4.0\V110\BuildCustomizations\masm.xml"
python cmConvertMSBuildXMLToJSON.py -t v12 "c:\...\MSBuild\Microsoft.Cpp\v4.0\V120\BuildCustomizations\masm.xml"
python cmConvertMSBuildXMLToJSON.py -t v14 "c:\...\MSBuild\Microsoft.Cpp\v4.0\V140\BuildCustomizations\masm.xml"
Stephan Szabo 7 lat temu
rodzic
commit
a84461160c

+ 981 - 0
Templates/MSBuild/FlagTables/v10_CL.json

@@ -0,0 +1,981 @@
+[
+  {
+    "name": "DebugInformationFormat",
+    "switch": "Z7",
+    "comment": "C7 compatible",
+    "value": "OldStyle",
+    "flags": []
+  },
+  {
+    "name": "DebugInformationFormat",
+    "switch": "Zi",
+    "comment": "Program Database",
+    "value": "ProgramDatabase",
+    "flags": []
+  },
+  {
+    "name": "DebugInformationFormat",
+    "switch": "ZI",
+    "comment": "Program Database for Edit And Continue",
+    "value": "EditAndContinue",
+    "flags": []
+  },
+  {
+    "name": "CompileAsManaged",
+    "switch": "",
+    "comment": "No Common Language RunTime Support",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "CompileAsManaged",
+    "switch": "clr",
+    "comment": "Common Language RunTime Support",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "CompileAsManaged",
+    "switch": "clr:pure",
+    "comment": "Pure MSIL Common Language RunTime Support",
+    "value": "Pure",
+    "flags": []
+  },
+  {
+    "name": "CompileAsManaged",
+    "switch": "clr:safe",
+    "comment": "Safe MSIL Common Language RunTime Support",
+    "value": "Safe",
+    "flags": []
+  },
+  {
+    "name": "CompileAsManaged",
+    "switch": "clr:oldSyntax",
+    "comment": "Common Language RunTime Support, Old Syntax",
+    "value": "OldSyntax",
+    "flags": []
+  },
+  {
+    "name": "WarningLevel",
+    "switch": "W0",
+    "comment": "Turn Off All Warnings",
+    "value": "TurnOffAllWarnings",
+    "flags": []
+  },
+  {
+    "name": "WarningLevel",
+    "switch": "W1",
+    "comment": "Level1",
+    "value": "Level1",
+    "flags": []
+  },
+  {
+    "name": "WarningLevel",
+    "switch": "W2",
+    "comment": "Level2",
+    "value": "Level2",
+    "flags": []
+  },
+  {
+    "name": "WarningLevel",
+    "switch": "W3",
+    "comment": "Level3",
+    "value": "Level3",
+    "flags": []
+  },
+  {
+    "name": "WarningLevel",
+    "switch": "W4",
+    "comment": "Level4",
+    "value": "Level4",
+    "flags": []
+  },
+  {
+    "name": "WarningLevel",
+    "switch": "Wall",
+    "comment": "EnableAllWarnings",
+    "value": "EnableAllWarnings",
+    "flags": []
+  },
+  {
+    "name": "Optimization",
+    "switch": "Od",
+    "comment": "Disabled",
+    "value": "Disabled",
+    "flags": []
+  },
+  {
+    "name": "Optimization",
+    "switch": "O1",
+    "comment": "Minimize Size",
+    "value": "MinSpace",
+    "flags": []
+  },
+  {
+    "name": "Optimization",
+    "switch": "O2",
+    "comment": "Maximize Speed",
+    "value": "MaxSpeed",
+    "flags": []
+  },
+  {
+    "name": "Optimization",
+    "switch": "Ox",
+    "comment": "Full Optimization",
+    "value": "Full",
+    "flags": []
+  },
+  {
+    "name": "InlineFunctionExpansion",
+    "switch": "",
+    "comment": "Default",
+    "value": "Default",
+    "flags": []
+  },
+  {
+    "name": "InlineFunctionExpansion",
+    "switch": "Ob0",
+    "comment": "Disabled",
+    "value": "Disabled",
+    "flags": []
+  },
+  {
+    "name": "InlineFunctionExpansion",
+    "switch": "Ob1",
+    "comment": "Only __inline",
+    "value": "OnlyExplicitInline",
+    "flags": []
+  },
+  {
+    "name": "InlineFunctionExpansion",
+    "switch": "Ob2",
+    "comment": "Any Suitable",
+    "value": "AnySuitable",
+    "flags": []
+  },
+  {
+    "name": "FavorSizeOrSpeed",
+    "switch": "Os",
+    "comment": "Favor small code",
+    "value": "Size",
+    "flags": []
+  },
+  {
+    "name": "FavorSizeOrSpeed",
+    "switch": "Ot",
+    "comment": "Favor fast code",
+    "value": "Speed",
+    "flags": []
+  },
+  {
+    "name": "FavorSizeOrSpeed",
+    "switch": "",
+    "comment": "Neither",
+    "value": "Neither",
+    "flags": []
+  },
+  {
+    "name": "ExceptionHandling",
+    "switch": "EHa",
+    "comment": "Yes with SEH Exceptions",
+    "value": "Async",
+    "flags": []
+  },
+  {
+    "name": "ExceptionHandling",
+    "switch": "EHsc",
+    "comment": "Yes",
+    "value": "Sync",
+    "flags": []
+  },
+  {
+    "name": "ExceptionHandling",
+    "switch": "EHs",
+    "comment": "Yes with Extern C functions",
+    "value": "SyncCThrow",
+    "flags": []
+  },
+  {
+    "name": "ExceptionHandling",
+    "switch": "",
+    "comment": "No",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "BasicRuntimeChecks",
+    "switch": "RTCs",
+    "comment": "Stack Frames",
+    "value": "StackFrameRuntimeCheck",
+    "flags": []
+  },
+  {
+    "name": "BasicRuntimeChecks",
+    "switch": "RTCu",
+    "comment": "Uninitialized variables",
+    "value": "UninitializedLocalUsageCheck",
+    "flags": []
+  },
+  {
+    "name": "BasicRuntimeChecks",
+    "switch": "RTC1",
+    "comment": "Both (/RTC1, equiv. to /RTCsu)",
+    "value": "EnableFastChecks",
+    "flags": []
+  },
+  {
+    "name": "BasicRuntimeChecks",
+    "switch": "",
+    "comment": "Default",
+    "value": "Default",
+    "flags": []
+  },
+  {
+    "name": "RuntimeLibrary",
+    "switch": "MT",
+    "comment": "Multi-threaded",
+    "value": "MultiThreaded",
+    "flags": []
+  },
+  {
+    "name": "RuntimeLibrary",
+    "switch": "MTd",
+    "comment": "Multi-threaded Debug",
+    "value": "MultiThreadedDebug",
+    "flags": []
+  },
+  {
+    "name": "RuntimeLibrary",
+    "switch": "MD",
+    "comment": "Multi-threaded DLL",
+    "value": "MultiThreadedDLL",
+    "flags": []
+  },
+  {
+    "name": "RuntimeLibrary",
+    "switch": "MDd",
+    "comment": "Multi-threaded Debug DLL",
+    "value": "MultiThreadedDebugDLL",
+    "flags": []
+  },
+  {
+    "name": "StructMemberAlignment",
+    "switch": "Zp1",
+    "comment": "1 Byte",
+    "value": "1Byte",
+    "flags": []
+  },
+  {
+    "name": "StructMemberAlignment",
+    "switch": "Zp2",
+    "comment": "2 Bytes",
+    "value": "2Bytes",
+    "flags": []
+  },
+  {
+    "name": "StructMemberAlignment",
+    "switch": "Zp4",
+    "comment": "4 Byte",
+    "value": "4Bytes",
+    "flags": []
+  },
+  {
+    "name": "StructMemberAlignment",
+    "switch": "Zp8",
+    "comment": "8 Bytes",
+    "value": "8Bytes",
+    "flags": []
+  },
+  {
+    "name": "StructMemberAlignment",
+    "switch": "Zp16",
+    "comment": "16 Bytes",
+    "value": "16Bytes",
+    "flags": []
+  },
+  {
+    "name": "StructMemberAlignment",
+    "switch": "",
+    "comment": "Default",
+    "value": "Default",
+    "flags": []
+  },
+  {
+    "name": "EnableEnhancedInstructionSet",
+    "switch": "arch:SSE",
+    "comment": "Streaming SIMD Extensions (/arch:SSE)",
+    "value": "StreamingSIMDExtensions",
+    "flags": []
+  },
+  {
+    "name": "EnableEnhancedInstructionSet",
+    "switch": "arch:SSE2",
+    "comment": "Streaming SIMD Extensions 2 (/arch:SSE2)",
+    "value": "StreamingSIMDExtensions2",
+    "flags": []
+  },
+  {
+    "name": "EnableEnhancedInstructionSet",
+    "switch": "",
+    "comment": "Not Set",
+    "value": "NotSet",
+    "flags": []
+  },
+  {
+    "name": "FloatingPointModel",
+    "switch": "fp:precise",
+    "comment": "Precise",
+    "value": "Precise",
+    "flags": []
+  },
+  {
+    "name": "FloatingPointModel",
+    "switch": "fp:strict",
+    "comment": "Strict",
+    "value": "Strict",
+    "flags": []
+  },
+  {
+    "name": "FloatingPointModel",
+    "switch": "fp:fast",
+    "comment": "Fast",
+    "value": "Fast",
+    "flags": []
+  },
+  {
+    "name": "PrecompiledHeader",
+    "switch": "Yc",
+    "comment": "Create",
+    "value": "Create",
+    "flags": [
+      "UserValue",
+      "UserIgnored",
+      "Continue"
+    ]
+  },
+  {
+    "name": "PrecompiledHeader",
+    "switch": "Yu",
+    "comment": "Use",
+    "value": "Use",
+    "flags": [
+      "UserValue",
+      "UserIgnored",
+      "Continue"
+    ]
+  },
+  {
+    "name": "PrecompiledHeader",
+    "switch": "",
+    "comment": "Not Using Precompiled Headers",
+    "value": "NotUsing",
+    "flags": []
+  },
+  {
+    "name": "AssemblerOutput",
+    "switch": "",
+    "comment": "No Listing",
+    "value": "NoListing",
+    "flags": []
+  },
+  {
+    "name": "AssemblerOutput",
+    "switch": "FA",
+    "comment": "Assembly-Only Listing",
+    "value": "AssemblyCode",
+    "flags": []
+  },
+  {
+    "name": "AssemblerOutput",
+    "switch": "FAc",
+    "comment": "Assembly With Machine Code",
+    "value": "AssemblyAndMachineCode",
+    "flags": []
+  },
+  {
+    "name": "AssemblerOutput",
+    "switch": "FAs",
+    "comment": "Assembly With Source Code",
+    "value": "AssemblyAndSourceCode",
+    "flags": []
+  },
+  {
+    "name": "AssemblerOutput",
+    "switch": "FAcs",
+    "comment": "Assembly, Machine Code and Source",
+    "value": "All",
+    "flags": []
+  },
+  {
+    "name": "CallingConvention",
+    "switch": "Gd",
+    "comment": "__cdecl",
+    "value": "Cdecl",
+    "flags": []
+  },
+  {
+    "name": "CallingConvention",
+    "switch": "Gr",
+    "comment": "__fastcall",
+    "value": "FastCall",
+    "flags": []
+  },
+  {
+    "name": "CallingConvention",
+    "switch": "Gz",
+    "comment": "__stdcall",
+    "value": "StdCall",
+    "flags": []
+  },
+  {
+    "name": "CompileAs",
+    "switch": "",
+    "comment": "Default",
+    "value": "Default",
+    "flags": []
+  },
+  {
+    "name": "CompileAs",
+    "switch": "TC",
+    "comment": "Compile as C Code",
+    "value": "CompileAsC",
+    "flags": []
+  },
+  {
+    "name": "CompileAs",
+    "switch": "TP",
+    "comment": "Compile as C++ Code",
+    "value": "CompileAsCpp",
+    "flags": []
+  },
+  {
+    "name": "ErrorReporting",
+    "switch": "errorReport:none",
+    "comment": "Do Not Send Report",
+    "value": "None",
+    "flags": []
+  },
+  {
+    "name": "ErrorReporting",
+    "switch": "errorReport:prompt",
+    "comment": "Prompt Immediately",
+    "value": "Prompt",
+    "flags": []
+  },
+  {
+    "name": "ErrorReporting",
+    "switch": "errorReport:queue",
+    "comment": "Queue For Next Login",
+    "value": "Queue",
+    "flags": []
+  },
+  {
+    "name": "ErrorReporting",
+    "switch": "errorReport:send",
+    "comment": "Send Automatically",
+    "value": "Send",
+    "flags": []
+  },
+  {
+    "name": "SuppressStartupBanner",
+    "switch": "nologo-",
+    "comment": "Suppress Startup Banner",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "SuppressStartupBanner",
+    "switch": "nologo",
+    "comment": "Suppress Startup Banner",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "TreatWarningAsError",
+    "switch": "WX-",
+    "comment": "Treat Warnings As Errors",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "TreatWarningAsError",
+    "switch": "WX",
+    "comment": "Treat Warnings As Errors",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "MultiProcessorCompilation",
+    "switch": "MP",
+    "comment": "Multi-processor Compilation",
+    "value": "true",
+    "flags": [
+      "UserValue",
+      "UserIgnored",
+      "Continue"
+    ]
+  },
+  {
+    "name": "IntrinsicFunctions",
+    "switch": "Oi",
+    "comment": "Enable Intrinsic Functions",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "OmitFramePointers",
+    "switch": "Oy-",
+    "comment": "Omit Frame Pointers",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "OmitFramePointers",
+    "switch": "Oy",
+    "comment": "Omit Frame Pointers",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "EnableFiberSafeOptimizations",
+    "switch": "GT",
+    "comment": "Enable Fiber-Safe Optimizations",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "WholeProgramOptimization",
+    "switch": "GL",
+    "comment": "Whole Program Optimization",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "UndefineAllPreprocessorDefinitions",
+    "switch": "u",
+    "comment": "Undefine All Preprocessor Definitions",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "IgnoreStandardIncludePath",
+    "switch": "X",
+    "comment": "Ignore Standard Include Paths",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "PreprocessToFile",
+    "switch": "P",
+    "comment": "Preprocess to a File",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "PreprocessSuppressLineNumbers",
+    "switch": "EP",
+    "comment": "Preprocess Suppress Line Numbers",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "PreprocessKeepComments",
+    "switch": "C",
+    "comment": "Keep Comments",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "StringPooling",
+    "switch": "GF-",
+    "comment": "Enable String Pooling",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "StringPooling",
+    "switch": "GF",
+    "comment": "Enable String Pooling",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "MinimalRebuild",
+    "switch": "Gm-",
+    "comment": "Enable Minimal Rebuild",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "MinimalRebuild",
+    "switch": "Gm",
+    "comment": "Enable Minimal Rebuild",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "SmallerTypeCheck",
+    "switch": "RTCc",
+    "comment": "Smaller Type Check",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "BufferSecurityCheck",
+    "switch": "GS-",
+    "comment": "Buffer Security Check",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "BufferSecurityCheck",
+    "switch": "GS",
+    "comment": "Buffer Security Check",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "FunctionLevelLinking",
+    "switch": "Gy-",
+    "comment": "Enable Function-Level Linking",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "FunctionLevelLinking",
+    "switch": "Gy",
+    "comment": "Enable Function-Level Linking",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "FloatingPointExceptions",
+    "switch": "fp:except-",
+    "comment": "Enable Floating Point Exceptions",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "FloatingPointExceptions",
+    "switch": "fp:except",
+    "comment": "Enable Floating Point Exceptions",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "CreateHotpatchableImage",
+    "switch": "hotpatch",
+    "comment": "Create Hotpatchable Image",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "DisableLanguageExtensions",
+    "switch": "Za",
+    "comment": "Disable Language Extensions",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "TreatWChar_tAsBuiltInType",
+    "switch": "Zc:wchar_t-",
+    "comment": "Treat WChar_t As Built in Type",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "TreatWChar_tAsBuiltInType",
+    "switch": "Zc:wchar_t",
+    "comment": "Treat WChar_t As Built in Type",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "ForceConformanceInForLoopScope",
+    "switch": "Zc:forScope-",
+    "comment": "Force Conformance in For Loop Scope",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "ForceConformanceInForLoopScope",
+    "switch": "Zc:forScope",
+    "comment": "Force Conformance in For Loop Scope",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "RuntimeTypeInfo",
+    "switch": "GR-",
+    "comment": "Enable Run-Time Type Information",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "RuntimeTypeInfo",
+    "switch": "GR",
+    "comment": "Enable Run-Time Type Information",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "OpenMPSupport",
+    "switch": "openmp-",
+    "comment": "Open MP Support",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "OpenMPSupport",
+    "switch": "openmp",
+    "comment": "Open MP Support",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "ExpandAttributedSource",
+    "switch": "Fx",
+    "comment": "Expand Attributed Source",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "GenerateXMLDocumentationFiles",
+    "switch": "doc",
+    "comment": "Generate XML Documentation Files",
+    "value": "true",
+    "flags": [
+      "UserValue",
+      "UserIgnored",
+      "Continue"
+    ]
+  },
+  {
+    "name": "BrowseInformation",
+    "switch": "FR",
+    "comment": "Enable Browse Information",
+    "value": "true",
+    "flags": [
+      "UserValue",
+      "UserIgnored",
+      "Continue"
+    ]
+  },
+  {
+    "name": "ShowIncludes",
+    "switch": "showIncludes",
+    "comment": "Show Includes",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "EnablePREfast",
+    "switch": "analyze-",
+    "comment": "Enable Code Analysis",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "EnablePREfast",
+    "switch": "analyze",
+    "comment": "Enable Code Analysis",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "UseFullPaths",
+    "switch": "FC",
+    "comment": "Use Full Paths",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "OmitDefaultLibName",
+    "switch": "Zl",
+    "comment": "Omit Default Library Name",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "UseUnicodeForAssemblerListing",
+    "switch": "FAu",
+    "comment": "Use Unicode For Assembler Listing",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "AdditionalIncludeDirectories",
+    "switch": "I",
+    "comment": "Additional Include Directories",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "AdditionalUsingDirectories",
+    "switch": "AI",
+    "comment": "Resolve #using References",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "PreprocessorDefinitions",
+    "switch": "D",
+    "comment": "Preprocessor Definitions",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "UndefinePreprocessorDefinitions",
+    "switch": "U",
+    "comment": "Undefine Preprocessor Definitions",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "DisableSpecificWarnings",
+    "switch": "wd",
+    "comment": "Disable Specific Warnings",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "ForcedIncludeFiles",
+    "switch": "FI",
+    "comment": "Forced Include File",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "ForcedUsingFiles",
+    "switch": "FU",
+    "comment": "Forced #using File",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "TreatSpecificWarningsAsErrors",
+    "switch": "we",
+    "comment": "Treat Specific Warnings As Errors",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "PreprocessOutputPath",
+    "switch": "Fi",
+    "comment": "Preprocess Output Path",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "PrecompiledHeaderFile",
+    "switch": "Yu",
+    "comment": "Precompiled Header File",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "UserRequired"
+    ]
+  },
+  {
+    "name": "PrecompiledHeaderFile",
+    "switch": "Yc",
+    "comment": "Precompiled Header File",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "UserRequired"
+    ]
+  },
+  {
+    "name": "PrecompiledHeaderOutputFile",
+    "switch": "Fp",
+    "comment": "Precompiled Header Output File",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "AssemblerListingLocation",
+    "switch": "Fa",
+    "comment": "ASM List Location",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "ObjectFileName",
+    "switch": "Fo",
+    "comment": "Object File Name",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "ProgramDataBaseFileName",
+    "switch": "Fd",
+    "comment": "Program Database File Name",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "XMLDocumentationFileName",
+    "switch": "doc",
+    "comment": "XML Documentation File Name",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "UserRequired"
+    ]
+  },
+  {
+    "name": "BrowseInformationFile",
+    "switch": "FR",
+    "comment": "Browse Information File",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "UserRequired"
+    ]
+  },
+  {
+    "name": "ProcessorNumber",
+    "switch": "MP",
+    "comment": "Number of processors",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "UserRequired"
+    ]
+  }
+]

+ 297 - 0
Templates/MSBuild/FlagTables/v10_LIB.json

@@ -0,0 +1,297 @@
+[
+  {
+    "name": "ErrorReporting",
+    "switch": "ERRORREPORT:PROMPT",
+    "comment": "PromptImmediately",
+    "value": "PromptImmediately",
+    "flags": []
+  },
+  {
+    "name": "ErrorReporting",
+    "switch": "ERRORREPORT:QUEUE",
+    "comment": "Queue For Next Login",
+    "value": "QueueForNextLogin",
+    "flags": []
+  },
+  {
+    "name": "ErrorReporting",
+    "switch": "ERRORREPORT:SEND",
+    "comment": "Send Error Report",
+    "value": "SendErrorReport",
+    "flags": []
+  },
+  {
+    "name": "ErrorReporting",
+    "switch": "ERRORREPORT:NONE",
+    "comment": "No Error Report",
+    "value": "NoErrorReport",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:ARM",
+    "comment": "MachineARM",
+    "value": "MachineARM",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:EBC",
+    "comment": "MachineEBC",
+    "value": "MachineEBC",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:IA64",
+    "comment": "MachineIA64",
+    "value": "MachineIA64",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:MIPS",
+    "comment": "MachineMIPS",
+    "value": "MachineMIPS",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:MIPS16",
+    "comment": "MachineMIPS16",
+    "value": "MachineMIPS16",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:MIPSFPU",
+    "comment": "MachineMIPSFPU",
+    "value": "MachineMIPSFPU",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:MIPSFPU16",
+    "comment": "MachineMIPSFPU16",
+    "value": "MachineMIPSFPU16",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:SH4",
+    "comment": "MachineSH4",
+    "value": "MachineSH4",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:THUMB",
+    "comment": "MachineTHUMB",
+    "value": "MachineTHUMB",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:X64",
+    "comment": "MachineX64",
+    "value": "MachineX64",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:X86",
+    "comment": "MachineX86",
+    "value": "MachineX86",
+    "flags": []
+  },
+  {
+    "name": "SubSystem",
+    "switch": "SUBSYSTEM:CONSOLE",
+    "comment": "Console",
+    "value": "Console",
+    "flags": []
+  },
+  {
+    "name": "SubSystem",
+    "switch": "SUBSYSTEM:WINDOWS",
+    "comment": "Windows",
+    "value": "Windows",
+    "flags": []
+  },
+  {
+    "name": "SubSystem",
+    "switch": "SUBSYSTEM:NATIVE",
+    "comment": "Native",
+    "value": "Native",
+    "flags": []
+  },
+  {
+    "name": "SubSystem",
+    "switch": "SUBSYSTEM:EFI_APPLICATION",
+    "comment": "EFI Application",
+    "value": "EFI Application",
+    "flags": []
+  },
+  {
+    "name": "SubSystem",
+    "switch": "SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER",
+    "comment": "EFI Boot Service Driver",
+    "value": "EFI Boot Service Driver",
+    "flags": []
+  },
+  {
+    "name": "SubSystem",
+    "switch": "SUBSYSTEM:EFI_ROM",
+    "comment": "EFI ROM",
+    "value": "EFI ROM",
+    "flags": []
+  },
+  {
+    "name": "SubSystem",
+    "switch": "SUBSYSTEM:EFI_RUNTIME_DRIVER",
+    "comment": "EFI Runtime",
+    "value": "EFI Runtime",
+    "flags": []
+  },
+  {
+    "name": "SubSystem",
+    "switch": "SUBSYSTEM:WINDOWSCE",
+    "comment": "WindowsCE",
+    "value": "WindowsCE",
+    "flags": []
+  },
+  {
+    "name": "SubSystem",
+    "switch": "SUBSYSTEM:POSIX",
+    "comment": "POSIX",
+    "value": "POSIX",
+    "flags": []
+  },
+  {
+    "name": "SuppressStartupBanner",
+    "switch": "NOLOGO",
+    "comment": "Suppress Startup Banner",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "IgnoreAllDefaultLibraries",
+    "switch": "NODEFAULTLIB",
+    "comment": "Ignore All Default Libraries",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "TreatLibWarningAsErrors",
+    "switch": "WX:NO",
+    "comment": "Treat Lib Warning As Errors",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "TreatLibWarningAsErrors",
+    "switch": "WX",
+    "comment": "Treat Lib Warning As Errors",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "Verbose",
+    "switch": "VERBOSE",
+    "comment": "Verbose",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "LinkTimeCodeGeneration",
+    "switch": "LTCG",
+    "comment": "Link Time Code Generation",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "AdditionalLibraryDirectories",
+    "switch": "LIBPATH:",
+    "comment": "Additional Library Directories",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "IgnoreSpecificDefaultLibraries",
+    "switch": "NODEFAULTLIB:",
+    "comment": "Ignore Specific Default Libraries",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "ExportNamedFunctions",
+    "switch": "EXPORT:",
+    "comment": "Export Named Functions",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "RemoveObjects",
+    "switch": "REMOVE:",
+    "comment": "Remove Objects",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "OutputFile",
+    "switch": "OUT:",
+    "comment": "Output File",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "ModuleDefinitionFile",
+    "switch": "DEF:",
+    "comment": "Module Definition File Name",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "ForceSymbolReferences",
+    "switch": "INCLUDE:",
+    "comment": "Force Symbol References",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "DisplayLibrary",
+    "switch": "LIST:",
+    "comment": "Display Library to standard output",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "Name",
+    "switch": "NAME:",
+    "comment": "Name",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  }
+]

+ 1156 - 0
Templates/MSBuild/FlagTables/v10_Link.json

@@ -0,0 +1,1156 @@
+[
+  {
+    "name": "ShowProgress",
+    "switch": "",
+    "comment": "Not Set",
+    "value": "NotSet",
+    "flags": []
+  },
+  {
+    "name": "ShowProgress",
+    "switch": "VERBOSE",
+    "comment": "Display all progress messages",
+    "value": "LinkVerbose",
+    "flags": []
+  },
+  {
+    "name": "ShowProgress",
+    "switch": "VERBOSE:Lib",
+    "comment": "For Libraries Searched",
+    "value": "LinkVerboseLib",
+    "flags": []
+  },
+  {
+    "name": "ShowProgress",
+    "switch": "VERBOSE:ICF",
+    "comment": "About COMDAT folding during optimized linking",
+    "value": "LinkVerboseICF",
+    "flags": []
+  },
+  {
+    "name": "ShowProgress",
+    "switch": "VERBOSE:REF",
+    "comment": "About data removed during optimized linking",
+    "value": "LinkVerboseREF",
+    "flags": []
+  },
+  {
+    "name": "ShowProgress",
+    "switch": "VERBOSE:SAFESEH",
+    "comment": "About Modules incompatible with SEH",
+    "value": "LinkVerboseSAFESEH",
+    "flags": []
+  },
+  {
+    "name": "ShowProgress",
+    "switch": "VERBOSE:CLR",
+    "comment": "About linker activity related to managed code",
+    "value": "LinkVerboseCLR",
+    "flags": []
+  },
+  {
+    "name": "ForceFileOutput",
+    "switch": "FORCE",
+    "comment": "Enabled",
+    "value": "Enabled",
+    "flags": []
+  },
+  {
+    "name": "ForceFileOutput",
+    "switch": "FORCE:MULTIPLE",
+    "comment": "Multiply Defined Symbol Only",
+    "value": "MultiplyDefinedSymbolOnly",
+    "flags": []
+  },
+  {
+    "name": "ForceFileOutput",
+    "switch": "FORCE:UNRESOLVED",
+    "comment": "Undefined Symbol Only",
+    "value": "UndefinedSymbolOnly",
+    "flags": []
+  },
+  {
+    "name": "CreateHotPatchableImage",
+    "switch": "FUNCTIONPADMIN",
+    "comment": "Enabled",
+    "value": "Enabled",
+    "flags": []
+  },
+  {
+    "name": "CreateHotPatchableImage",
+    "switch": "FUNCTIONPADMIN:5",
+    "comment": "X86 Image Only",
+    "value": "X86Image",
+    "flags": []
+  },
+  {
+    "name": "CreateHotPatchableImage",
+    "switch": "FUNCTIONPADMIN:6",
+    "comment": "X64 Image Only",
+    "value": "X64Image",
+    "flags": []
+  },
+  {
+    "name": "CreateHotPatchableImage",
+    "switch": "FUNCTIONPADMIN:16",
+    "comment": "Itanium Image Only",
+    "value": "ItaniumImage",
+    "flags": []
+  },
+  {
+    "name": "UACExecutionLevel",
+    "switch": "level='asInvoker'",
+    "comment": "asInvoker",
+    "value": "AsInvoker",
+    "flags": []
+  },
+  {
+    "name": "UACExecutionLevel",
+    "switch": "level='highestAvailable'",
+    "comment": "highestAvailable",
+    "value": "HighestAvailable",
+    "flags": []
+  },
+  {
+    "name": "UACExecutionLevel",
+    "switch": "level='requireAdministrator'",
+    "comment": "requireAdministrator",
+    "value": "RequireAdministrator",
+    "flags": []
+  },
+  {
+    "name": "SubSystem",
+    "switch": "",
+    "comment": "Not Set",
+    "value": "NotSet",
+    "flags": []
+  },
+  {
+    "name": "SubSystem",
+    "switch": "SUBSYSTEM:CONSOLE",
+    "comment": "Console",
+    "value": "Console",
+    "flags": []
+  },
+  {
+    "name": "SubSystem",
+    "switch": "SUBSYSTEM:WINDOWS",
+    "comment": "Windows",
+    "value": "Windows",
+    "flags": []
+  },
+  {
+    "name": "SubSystem",
+    "switch": "SUBSYSTEM:NATIVE",
+    "comment": "Native",
+    "value": "Native",
+    "flags": []
+  },
+  {
+    "name": "SubSystem",
+    "switch": "SUBSYSTEM:EFI_APPLICATION",
+    "comment": "EFI Application",
+    "value": "EFI Application",
+    "flags": []
+  },
+  {
+    "name": "SubSystem",
+    "switch": "SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER",
+    "comment": "EFI Boot Service Driver",
+    "value": "EFI Boot Service Driver",
+    "flags": []
+  },
+  {
+    "name": "SubSystem",
+    "switch": "SUBSYSTEM:EFI_ROM",
+    "comment": "EFI ROM",
+    "value": "EFI ROM",
+    "flags": []
+  },
+  {
+    "name": "SubSystem",
+    "switch": "SUBSYSTEM:EFI_RUNTIME_DRIVER",
+    "comment": "EFI Runtime",
+    "value": "EFI Runtime",
+    "flags": []
+  },
+  {
+    "name": "SubSystem",
+    "switch": "SUBSYSTEM:WINDOWSCE",
+    "comment": "WindowsCE",
+    "value": "WindowsCE",
+    "flags": []
+  },
+  {
+    "name": "SubSystem",
+    "switch": "SUBSYSTEM:POSIX",
+    "comment": "POSIX",
+    "value": "POSIX",
+    "flags": []
+  },
+  {
+    "name": "Driver",
+    "switch": "",
+    "comment": "Not Set",
+    "value": "NotSet",
+    "flags": []
+  },
+  {
+    "name": "Driver",
+    "switch": "Driver",
+    "comment": "Driver",
+    "value": "Driver",
+    "flags": []
+  },
+  {
+    "name": "Driver",
+    "switch": "DRIVER:UPONLY",
+    "comment": "UP Only",
+    "value": "UpOnly",
+    "flags": []
+  },
+  {
+    "name": "Driver",
+    "switch": "DRIVER:WDM",
+    "comment": "WDM",
+    "value": "WDM",
+    "flags": []
+  },
+  {
+    "name": "LinkTimeCodeGeneration",
+    "switch": "",
+    "comment": "Default",
+    "value": "Default",
+    "flags": []
+  },
+  {
+    "name": "LinkTimeCodeGeneration",
+    "switch": "LTCG",
+    "comment": "Use Link Time Code Generation",
+    "value": "UseLinkTimeCodeGeneration",
+    "flags": []
+  },
+  {
+    "name": "LinkTimeCodeGeneration",
+    "switch": "LTCG:PGInstrument",
+    "comment": "Profile Guided Optimization - Instrument",
+    "value": "PGInstrument",
+    "flags": []
+  },
+  {
+    "name": "LinkTimeCodeGeneration",
+    "switch": "LTCG:PGOptimize",
+    "comment": "Profile Guided Optimization - Optimization",
+    "value": "PGOptimization",
+    "flags": []
+  },
+  {
+    "name": "LinkTimeCodeGeneration",
+    "switch": "LTCG:PGUpdate",
+    "comment": "Profile Guided Optimization - Update",
+    "value": "PGUpdate",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "",
+    "comment": "Not Set",
+    "value": "NotSet",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:ARM",
+    "comment": "MachineARM",
+    "value": "MachineARM",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:EBC",
+    "comment": "MachineEBC",
+    "value": "MachineEBC",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:IA64",
+    "comment": "MachineIA64",
+    "value": "MachineIA64",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:MIPS",
+    "comment": "MachineMIPS",
+    "value": "MachineMIPS",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:MIPS16",
+    "comment": "MachineMIPS16",
+    "value": "MachineMIPS16",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:MIPSFPU",
+    "comment": "MachineMIPSFPU",
+    "value": "MachineMIPSFPU",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:MIPSFPU16",
+    "comment": "MachineMIPSFPU16",
+    "value": "MachineMIPSFPU16",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:SH4",
+    "comment": "MachineSH4",
+    "value": "MachineSH4",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:THUMB",
+    "comment": "MachineTHUMB",
+    "value": "MachineTHUMB",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:X64",
+    "comment": "MachineX64",
+    "value": "MachineX64",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:X86",
+    "comment": "MachineX86",
+    "value": "MachineX86",
+    "flags": []
+  },
+  {
+    "name": "CLRThreadAttribute",
+    "switch": "CLRTHREADATTRIBUTE:MTA",
+    "comment": "MTA threading attribute",
+    "value": "MTAThreadingAttribute",
+    "flags": []
+  },
+  {
+    "name": "CLRThreadAttribute",
+    "switch": "CLRTHREADATTRIBUTE:STA",
+    "comment": "STA threading attribute",
+    "value": "STAThreadingAttribute",
+    "flags": []
+  },
+  {
+    "name": "CLRThreadAttribute",
+    "switch": "CLRTHREADATTRIBUTE:NONE",
+    "comment": "Default threading attribute",
+    "value": "DefaultThreadingAttribute",
+    "flags": []
+  },
+  {
+    "name": "CLRImageType",
+    "switch": "CLRIMAGETYPE:IJW",
+    "comment": "Force IJW image",
+    "value": "ForceIJWImage",
+    "flags": []
+  },
+  {
+    "name": "CLRImageType",
+    "switch": "CLRIMAGETYPE:PURE",
+    "comment": "Force Pure IL Image",
+    "value": "ForcePureILImage",
+    "flags": []
+  },
+  {
+    "name": "CLRImageType",
+    "switch": "CLRIMAGETYPE:SAFE",
+    "comment": "Force Safe IL Image",
+    "value": "ForceSafeILImage",
+    "flags": []
+  },
+  {
+    "name": "CLRImageType",
+    "switch": "",
+    "comment": "Default image type",
+    "value": "Default",
+    "flags": []
+  },
+  {
+    "name": "LinkErrorReporting",
+    "switch": "ERRORREPORT:PROMPT",
+    "comment": "PromptImmediately",
+    "value": "PromptImmediately",
+    "flags": []
+  },
+  {
+    "name": "LinkErrorReporting",
+    "switch": "ERRORREPORT:QUEUE",
+    "comment": "Queue For Next Login",
+    "value": "QueueForNextLogin",
+    "flags": []
+  },
+  {
+    "name": "LinkErrorReporting",
+    "switch": "ERRORREPORT:SEND",
+    "comment": "Send Error Report",
+    "value": "SendErrorReport",
+    "flags": []
+  },
+  {
+    "name": "LinkErrorReporting",
+    "switch": "ERRORREPORT:NONE",
+    "comment": "No Error Report",
+    "value": "NoErrorReport",
+    "flags": []
+  },
+  {
+    "name": "CLRSupportLastError",
+    "switch": "CLRSupportLastError",
+    "comment": "Enabled",
+    "value": "Enabled",
+    "flags": []
+  },
+  {
+    "name": "CLRSupportLastError",
+    "switch": "CLRSupportLastError:NO",
+    "comment": "Disabled",
+    "value": "Disabled",
+    "flags": []
+  },
+  {
+    "name": "CLRSupportLastError",
+    "switch": "CLRSupportLastError:SYSTEMDLL",
+    "comment": "System Dlls Only",
+    "value": "SystemDlls",
+    "flags": []
+  },
+  {
+    "name": "LinkIncremental",
+    "switch": "INCREMENTAL:NO",
+    "comment": "Enable Incremental Linking",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "LinkIncremental",
+    "switch": "INCREMENTAL",
+    "comment": "Enable Incremental Linking",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "SuppressStartupBanner",
+    "switch": "NOLOGO",
+    "comment": "Suppress Startup Banner",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "LinkStatus",
+    "switch": "LTCG:NOSTATUS",
+    "comment": "Link Status",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "LinkStatus",
+    "switch": "LTCG:STATUS",
+    "comment": "Link Status",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "PreventDllBinding",
+    "switch": "ALLOWBIND:NO",
+    "comment": "Prevent Dll Binding",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "PreventDllBinding",
+    "switch": "ALLOWBIND",
+    "comment": "Prevent Dll Binding",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "TreatLinkerWarningAsErrors",
+    "switch": "WX:NO",
+    "comment": "Treat Linker Warning As Errors",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "TreatLinkerWarningAsErrors",
+    "switch": "WX",
+    "comment": "Treat Linker Warning As Errors",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "IgnoreAllDefaultLibraries",
+    "switch": "NODEFAULTLIB",
+    "comment": "Ignore All Default Libraries",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "GenerateManifest",
+    "switch": "MANIFEST:NO",
+    "comment": "Generate Manifest",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "GenerateManifest",
+    "switch": "MANIFEST",
+    "comment": "Generate Manifest",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "AllowIsolation",
+    "switch": "ALLOWISOLATION:NO",
+    "comment": "Allow Isolation",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "AllowIsolation",
+    "switch": "ALLOWISOLATION",
+    "comment": "Allow Isolation",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "EnableUAC",
+    "switch": "MANIFESTUAC:NO",
+    "comment": "Enable User Account Control (UAC)",
+    "value": "false",
+    "flags": [
+      "UserValue",
+      "UserIgnored",
+      "Continue"
+    ]
+  },
+  {
+    "name": "EnableUAC",
+    "switch": "MANIFESTUAC:",
+    "comment": "Enable User Account Control (UAC)",
+    "value": "true",
+    "flags": [
+      "UserValue",
+      "UserIgnored",
+      "Continue"
+    ]
+  },
+  {
+    "name": "UACUIAccess",
+    "switch": "uiAccess='false'",
+    "comment": "UAC Bypass UI Protection",
+    "value": "false",
+    "flags": [
+      "UserValue",
+      "UserRequired"
+    ]
+  },
+  {
+    "name": "UACUIAccess",
+    "switch": "MANIFESTUAC:",
+    "comment": "UAC Bypass UI Protection",
+    "value": "true",
+    "flags": [
+      "UserValue",
+      "UserRequired"
+    ]
+  },
+  {
+    "name": "UACUIAccess",
+    "switch": "uiAccess='false'",
+    "comment": "UAC Bypass UI Protection",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "UACUIAccess",
+    "switch": "uiAccess='true'",
+    "comment": "UAC Bypass UI Protection",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "GenerateDebugInformation",
+    "switch": "DEBUG",
+    "comment": "Generate Debug Info",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "GenerateMapFile",
+    "switch": "MAP",
+    "comment": "Generate Map File",
+    "value": "true",
+    "flags": [
+      "UserValue",
+      "UserIgnored",
+      "Continue"
+    ]
+  },
+  {
+    "name": "MapExports",
+    "switch": "MAPINFO:EXPORTS",
+    "comment": "Map Exports",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "AssemblyDebug",
+    "switch": "ASSEMBLYDEBUG:DISABLE",
+    "comment": "Debuggable Assembly",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "AssemblyDebug",
+    "switch": "ASSEMBLYDEBUG",
+    "comment": "Debuggable Assembly",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "LargeAddressAware",
+    "switch": "LARGEADDRESSAWARE:NO",
+    "comment": "Enable Large Addresses",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "LargeAddressAware",
+    "switch": "LARGEADDRESSAWARE",
+    "comment": "Enable Large Addresses",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "TerminalServerAware",
+    "switch": "TSAWARE:NO",
+    "comment": "Terminal Server",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "TerminalServerAware",
+    "switch": "TSAWARE",
+    "comment": "Terminal Server",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "SwapRunFromCD",
+    "switch": "SWAPRUN:CD",
+    "comment": "Swap Run From CD",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "SwapRunFromNET",
+    "switch": "SWAPRUN:NET",
+    "comment": "Swap Run From Network",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "OptimizeReferences",
+    "switch": "OPT:NOREF",
+    "comment": "References",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "OptimizeReferences",
+    "switch": "OPT:REF",
+    "comment": "References",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "EnableCOMDATFolding",
+    "switch": "OPT:NOICF",
+    "comment": "Enable COMDAT Folding",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "EnableCOMDATFolding",
+    "switch": "OPT:ICF",
+    "comment": "Enable COMDAT Folding",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "IgnoreEmbeddedIDL",
+    "switch": "IGNOREIDL",
+    "comment": "Ignore Embedded IDL",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "NoEntryPoint",
+    "switch": "NOENTRY",
+    "comment": "No Entry Point",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "SetChecksum",
+    "switch": "RELEASE",
+    "comment": "Set Checksum",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "RandomizedBaseAddress",
+    "switch": "DYNAMICBASE:NO",
+    "comment": "Randomized Base Address",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "RandomizedBaseAddress",
+    "switch": "DYNAMICBASE",
+    "comment": "Randomized Base Address",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "FixedBaseAddress",
+    "switch": "FIXED:NO",
+    "comment": "Fixed Base Address",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "FixedBaseAddress",
+    "switch": "FIXED",
+    "comment": "Fixed Base Address",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "DataExecutionPrevention",
+    "switch": "NXCOMPAT:NO",
+    "comment": "Data Execution Prevention (DEP)",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "DataExecutionPrevention",
+    "switch": "NXCOMPAT",
+    "comment": "Data Execution Prevention (DEP)",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "TurnOffAssemblyGeneration",
+    "switch": "NOASSEMBLY",
+    "comment": "Turn Off Assembly Generation",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "SupportUnloadOfDelayLoadedDLL",
+    "switch": "DELAY:UNLOAD",
+    "comment": "Unload delay loaded DLL",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "SupportNobindOfDelayLoadedDLL",
+    "switch": "DELAY:NOBIND",
+    "comment": "Nobind delay loaded DLL",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "Profile",
+    "switch": "PROFILE",
+    "comment": "Profile",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "LinkDelaySign",
+    "switch": "DELAYSIGN:NO",
+    "comment": "Delay Sign",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "LinkDelaySign",
+    "switch": "DELAYSIGN",
+    "comment": "Delay Sign",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "CLRUnmanagedCodeCheck",
+    "switch": "CLRUNMANAGEDCODECHECK:NO",
+    "comment": "CLR Unmanaged Code Check",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "CLRUnmanagedCodeCheck",
+    "switch": "CLRUNMANAGEDCODECHECK",
+    "comment": "CLR Unmanaged Code Check",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "ImageHasSafeExceptionHandlers",
+    "switch": "SAFESEH:NO",
+    "comment": "Image Has Safe Exception Handlers",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "ImageHasSafeExceptionHandlers",
+    "switch": "SAFESEH",
+    "comment": "Image Has Safe Exception Handlers",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "LinkDLL",
+    "switch": "DLL",
+    "comment": "",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "AdditionalLibraryDirectories",
+    "switch": "LIBPATH:",
+    "comment": "Additional Library Directories",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "IgnoreSpecificDefaultLibraries",
+    "switch": "NODEFAULTLIB:",
+    "comment": "Ignore Specific Default Libraries",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "AddModuleNamesToAssembly",
+    "switch": "ASSEMBLYMODULE:",
+    "comment": "Add Module to Assembly",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "EmbedManagedResourceFile",
+    "switch": "ASSEMBLYRESOURCE:",
+    "comment": "Embed Managed Resource File",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "ForceSymbolReferences",
+    "switch": "INCLUDE:",
+    "comment": "Force Symbol References",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "DelayLoadDLLs",
+    "switch": "DELAYLOAD:",
+    "comment": "Delay Loaded Dlls",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "AssemblyLinkResource",
+    "switch": "ASSEMBLYLINKRESOURCE:",
+    "comment": "Assembly Link Resource",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "AdditionalManifestDependencies",
+    "switch": "MANIFESTDEPENDENCY:",
+    "comment": "Additional Manifest Dependencies",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "OutputFile",
+    "switch": "OUT:",
+    "comment": "Output File",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "Version",
+    "switch": "VERSION:",
+    "comment": "Version",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "SpecifySectionAttributes",
+    "switch": "SECTION:",
+    "comment": "Specify Section Attributes",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "MSDOSStubFileName",
+    "switch": "STUB:",
+    "comment": "MS-DOS Stub File Name",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "ModuleDefinitionFile",
+    "switch": "DEF:",
+    "comment": "Module Definition File",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "ManifestFile",
+    "switch": "ManifestFile:",
+    "comment": "Manifest File",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "ProgramDatabaseFile",
+    "switch": "PDB:",
+    "comment": "Generate Program Database File",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "StripPrivateSymbols",
+    "switch": "PDBSTRIPPED:",
+    "comment": "Strip Private Symbols",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "MapFileName",
+    "switch": "MAP:",
+    "comment": "Map File Name",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "UserRequired"
+    ]
+  },
+  {
+    "name": "HeapReserveSize",
+    "switch": "HEAP:",
+    "comment": "Heap Reserve Size",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "HeapCommitSize",
+    "switch": "HEAP",
+    "comment": "Heap Commit Size",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "UserRequired"
+    ]
+  },
+  {
+    "name": "StackReserveSize",
+    "switch": "STACK:",
+    "comment": "Stack Reserve Size",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "StackCommitSize",
+    "switch": "STACK",
+    "comment": "Stack Commit Size",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "UserRequired"
+    ]
+  },
+  {
+    "name": "FunctionOrder",
+    "switch": "ORDER:@",
+    "comment": "Function Order",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "ProfileGuidedDatabase",
+    "switch": "PGD:",
+    "comment": "Profile Guided Database",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "MidlCommandFile",
+    "switch": "MIDL:@",
+    "comment": "MIDL Commands",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "MergedIDLBaseFileName",
+    "switch": "IDLOUT:",
+    "comment": "Merged IDL Base File Name",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "TypeLibraryFile",
+    "switch": "TLBOUT:",
+    "comment": "Type Library",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "EntryPointSymbol",
+    "switch": "ENTRY:",
+    "comment": "Entry Point",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "BaseAddress",
+    "switch": "BASE:",
+    "comment": "Base Address",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "ImportLibrary",
+    "switch": "IMPLIB:",
+    "comment": "Import Library",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "MergeSections",
+    "switch": "MERGE:",
+    "comment": "Merge Sections",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "LinkKeyFile",
+    "switch": "KEYFILE:",
+    "comment": "Key File",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "KeyContainer",
+    "switch": "KEYCONTAINER:",
+    "comment": "Key Container",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "TypeLibraryResourceID",
+    "switch": "TLBID:",
+    "comment": "TypeLib Resource ID",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "SectionAlignment",
+    "switch": "ALIGN:",
+    "comment": "SectionAlignment",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  }
+]

+ 295 - 0
Templates/MSBuild/FlagTables/v10_MASM.json

@@ -0,0 +1,295 @@
+[
+  {
+    "name": "PreserveIdentifierCase",
+    "switch": "",
+    "comment": "Default",
+    "value": "0",
+    "flags": []
+  },
+  {
+    "name": "PreserveIdentifierCase",
+    "switch": "Cp",
+    "comment": "Preserves Identifier Case (/Cp)",
+    "value": "1",
+    "flags": []
+  },
+  {
+    "name": "PreserveIdentifierCase",
+    "switch": "Cu",
+    "comment": "Maps all identifiers to upper case. (/Cu)",
+    "value": "2",
+    "flags": []
+  },
+  {
+    "name": "PreserveIdentifierCase",
+    "switch": "Cx",
+    "comment": "Preserves case in public and extern symbols. (/Cx)",
+    "value": "3",
+    "flags": []
+  },
+  {
+    "name": "WarningLevel",
+    "switch": "W0",
+    "comment": "Warning Level 0 (/W0)",
+    "value": "0",
+    "flags": []
+  },
+  {
+    "name": "WarningLevel",
+    "switch": "W1",
+    "comment": "Warning Level 1 (/W1)",
+    "value": "1",
+    "flags": []
+  },
+  {
+    "name": "WarningLevel",
+    "switch": "W2",
+    "comment": "Warning Level 2 (/W2)",
+    "value": "2",
+    "flags": []
+  },
+  {
+    "name": "WarningLevel",
+    "switch": "W3",
+    "comment": "Warning Level 3 (/W3)",
+    "value": "3",
+    "flags": []
+  },
+  {
+    "name": "PackAlignmentBoundary",
+    "switch": "",
+    "comment": "Default",
+    "value": "0",
+    "flags": []
+  },
+  {
+    "name": "PackAlignmentBoundary",
+    "switch": "Zp1",
+    "comment": "One Byte Boundary (/Zp1)",
+    "value": "1",
+    "flags": []
+  },
+  {
+    "name": "PackAlignmentBoundary",
+    "switch": "Zp2",
+    "comment": "Two Byte Boundary (/Zp2)",
+    "value": "2",
+    "flags": []
+  },
+  {
+    "name": "PackAlignmentBoundary",
+    "switch": "Zp4",
+    "comment": "Four Byte Boundary (/Zp4)",
+    "value": "3",
+    "flags": []
+  },
+  {
+    "name": "PackAlignmentBoundary",
+    "switch": "Zp8",
+    "comment": "Eight Byte Boundary (/Zp8)",
+    "value": "4",
+    "flags": []
+  },
+  {
+    "name": "PackAlignmentBoundary",
+    "switch": "Zp16",
+    "comment": "Sixteen Byte Boundary (/Zp16)",
+    "value": "5",
+    "flags": []
+  },
+  {
+    "name": "CallingConvention",
+    "switch": "",
+    "comment": "Default",
+    "value": "0",
+    "flags": []
+  },
+  {
+    "name": "CallingConvention",
+    "switch": "Gd",
+    "comment": "Use C-style Calling Convention (/Gd)",
+    "value": "1",
+    "flags": []
+  },
+  {
+    "name": "CallingConvention",
+    "switch": "Gz",
+    "comment": "Use stdcall Calling Convention (/Gz)",
+    "value": "2",
+    "flags": []
+  },
+  {
+    "name": "CallingConvention",
+    "switch": "Gc",
+    "comment": "Use Pascal Calling Convention (/Gc)",
+    "value": "3",
+    "flags": []
+  },
+  {
+    "name": "ErrorReporting",
+    "switch": "errorReport:prompt",
+    "comment": "Prompt to send report immediately (/errorReport:prompt)",
+    "value": "0",
+    "flags": []
+  },
+  {
+    "name": "ErrorReporting",
+    "switch": "errorReport:queue",
+    "comment": "Prompt to send report at the next logon (/errorReport:queue)",
+    "value": "1",
+    "flags": []
+  },
+  {
+    "name": "ErrorReporting",
+    "switch": "errorReport:send",
+    "comment": "Automatically send report (/errorReport:send)",
+    "value": "2",
+    "flags": []
+  },
+  {
+    "name": "ErrorReporting",
+    "switch": "errorReport:none",
+    "comment": "Do not send report (/errorReport:none)",
+    "value": "3",
+    "flags": []
+  },
+  {
+    "name": "NoLogo",
+    "switch": "nologo",
+    "comment": "Suppress Startup Banner",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "GeneratePreprocessedSourceListing",
+    "switch": "EP",
+    "comment": "Generate Preprocessed Source Listing",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "ListAllAvailableInformation",
+    "switch": "Sa",
+    "comment": "List All Available Information",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "UseSafeExceptionHandlers",
+    "switch": "safeseh",
+    "comment": "Use Safe Exception Handlers",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "AddFirstPassListing",
+    "switch": "Sf",
+    "comment": "Add First Pass Listing",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "EnableAssemblyGeneratedCodeListing",
+    "switch": "Sg",
+    "comment": "Enable Assembly Generated Code Listing",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "DisableSymbolTable",
+    "switch": "Sn",
+    "comment": "Disable Symbol Table",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "EnableFalseConditionalsInListing",
+    "switch": "Sx",
+    "comment": "Enable False Conditionals In Listing",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "TreatWarningsAsErrors",
+    "switch": "WX",
+    "comment": "Treat Warnings As Errors",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "MakeAllSymbolsPublic",
+    "switch": "Zf",
+    "comment": "Make All Symbols Public",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "GenerateDebugInformation",
+    "switch": "Zi",
+    "comment": "Generate Debug Information",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "EnableMASM51Compatibility",
+    "switch": "Zm",
+    "comment": "Enable MASM 5.1 Compatibility",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "PerformSyntaxCheckOnly",
+    "switch": "Zs",
+    "comment": "Perform Syntax Check Only",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "PreprocessorDefinitions",
+    "switch": "D\"[value]\"",
+    "comment": "Preprocessor Definitions",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "IncludePaths",
+    "switch": "I \"[value]\"",
+    "comment": "Include Paths",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "BrowseFile",
+    "switch": "FR\"[value]\"",
+    "comment": "Generate Browse Information File",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "ObjectFileName",
+    "switch": "Fo\"[value]\"",
+    "comment": "Object File Name",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "AssembledCodeListingFile",
+    "switch": "Fl\"[value]\"",
+    "comment": "Assembled Code Listing File",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  }
+]

+ 69 - 0
Templates/MSBuild/FlagTables/v10_RC.json

@@ -0,0 +1,69 @@
+[
+  {
+    "name": "IgnoreStandardIncludePath",
+    "switch": "X",
+    "comment": "Ignore Standard Include Paths",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "ShowProgress",
+    "switch": "v",
+    "comment": "Show Progress",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "SuppressStartupBanner",
+    "switch": "nologo",
+    "comment": "Suppress Startup Banner",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "NullTerminateStrings",
+    "switch": "n",
+    "comment": "Null Terminate Strings",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "PreprocessorDefinitions",
+    "switch": "D",
+    "comment": "Preprocessor Definitions",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "UndefinePreprocessorDefinitions",
+    "switch": "u",
+    "comment": "Undefine Preprocessor Definitions",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "AdditionalIncludeDirectories",
+    "switch": "I",
+    "comment": "Additional Include Directories",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "ResourceOutputFileName",
+    "switch": "fo",
+    "comment": "Resource File Name",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  }
+]

+ 1073 - 0
Templates/MSBuild/FlagTables/v11_CL.json

@@ -0,0 +1,1073 @@
+[
+  {
+    "name": "DebugInformationFormat",
+    "switch": "",
+    "comment": "None",
+    "value": "None",
+    "flags": []
+  },
+  {
+    "name": "DebugInformationFormat",
+    "switch": "Z7",
+    "comment": "C7 compatible",
+    "value": "OldStyle",
+    "flags": []
+  },
+  {
+    "name": "DebugInformationFormat",
+    "switch": "Zi",
+    "comment": "Program Database",
+    "value": "ProgramDatabase",
+    "flags": []
+  },
+  {
+    "name": "DebugInformationFormat",
+    "switch": "ZI",
+    "comment": "Program Database for Edit And Continue",
+    "value": "EditAndContinue",
+    "flags": []
+  },
+  {
+    "name": "CompileAsManaged",
+    "switch": "",
+    "comment": "No Common Language RunTime Support",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "CompileAsManaged",
+    "switch": "clr",
+    "comment": "Common Language RunTime Support",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "CompileAsManaged",
+    "switch": "clr:pure",
+    "comment": "Pure MSIL Common Language RunTime Support",
+    "value": "Pure",
+    "flags": []
+  },
+  {
+    "name": "CompileAsManaged",
+    "switch": "clr:safe",
+    "comment": "Safe MSIL Common Language RunTime Support",
+    "value": "Safe",
+    "flags": []
+  },
+  {
+    "name": "CompileAsManaged",
+    "switch": "clr:oldSyntax",
+    "comment": "Common Language RunTime Support, Old Syntax",
+    "value": "OldSyntax",
+    "flags": []
+  },
+  {
+    "name": "WarningLevel",
+    "switch": "W0",
+    "comment": "Turn Off All Warnings",
+    "value": "TurnOffAllWarnings",
+    "flags": []
+  },
+  {
+    "name": "WarningLevel",
+    "switch": "W1",
+    "comment": "Level1",
+    "value": "Level1",
+    "flags": []
+  },
+  {
+    "name": "WarningLevel",
+    "switch": "W2",
+    "comment": "Level2",
+    "value": "Level2",
+    "flags": []
+  },
+  {
+    "name": "WarningLevel",
+    "switch": "W3",
+    "comment": "Level3",
+    "value": "Level3",
+    "flags": []
+  },
+  {
+    "name": "WarningLevel",
+    "switch": "W4",
+    "comment": "Level4",
+    "value": "Level4",
+    "flags": []
+  },
+  {
+    "name": "WarningLevel",
+    "switch": "Wall",
+    "comment": "EnableAllWarnings",
+    "value": "EnableAllWarnings",
+    "flags": []
+  },
+  {
+    "name": "Optimization",
+    "switch": "Od",
+    "comment": "Disabled",
+    "value": "Disabled",
+    "flags": []
+  },
+  {
+    "name": "Optimization",
+    "switch": "O1",
+    "comment": "Minimize Size",
+    "value": "MinSpace",
+    "flags": []
+  },
+  {
+    "name": "Optimization",
+    "switch": "O2",
+    "comment": "Maximize Speed",
+    "value": "MaxSpeed",
+    "flags": []
+  },
+  {
+    "name": "Optimization",
+    "switch": "Ox",
+    "comment": "Full Optimization",
+    "value": "Full",
+    "flags": []
+  },
+  {
+    "name": "InlineFunctionExpansion",
+    "switch": "",
+    "comment": "Default",
+    "value": "Default",
+    "flags": []
+  },
+  {
+    "name": "InlineFunctionExpansion",
+    "switch": "Ob0",
+    "comment": "Disabled",
+    "value": "Disabled",
+    "flags": []
+  },
+  {
+    "name": "InlineFunctionExpansion",
+    "switch": "Ob1",
+    "comment": "Only __inline",
+    "value": "OnlyExplicitInline",
+    "flags": []
+  },
+  {
+    "name": "InlineFunctionExpansion",
+    "switch": "Ob2",
+    "comment": "Any Suitable",
+    "value": "AnySuitable",
+    "flags": []
+  },
+  {
+    "name": "FavorSizeOrSpeed",
+    "switch": "Os",
+    "comment": "Favor small code",
+    "value": "Size",
+    "flags": []
+  },
+  {
+    "name": "FavorSizeOrSpeed",
+    "switch": "Ot",
+    "comment": "Favor fast code",
+    "value": "Speed",
+    "flags": []
+  },
+  {
+    "name": "FavorSizeOrSpeed",
+    "switch": "",
+    "comment": "Neither",
+    "value": "Neither",
+    "flags": []
+  },
+  {
+    "name": "ExceptionHandling",
+    "switch": "EHa",
+    "comment": "Yes with SEH Exceptions",
+    "value": "Async",
+    "flags": []
+  },
+  {
+    "name": "ExceptionHandling",
+    "switch": "EHsc",
+    "comment": "Yes",
+    "value": "Sync",
+    "flags": []
+  },
+  {
+    "name": "ExceptionHandling",
+    "switch": "EHs",
+    "comment": "Yes with Extern C functions",
+    "value": "SyncCThrow",
+    "flags": []
+  },
+  {
+    "name": "ExceptionHandling",
+    "switch": "",
+    "comment": "No",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "BasicRuntimeChecks",
+    "switch": "RTCs",
+    "comment": "Stack Frames",
+    "value": "StackFrameRuntimeCheck",
+    "flags": []
+  },
+  {
+    "name": "BasicRuntimeChecks",
+    "switch": "RTCu",
+    "comment": "Uninitialized variables",
+    "value": "UninitializedLocalUsageCheck",
+    "flags": []
+  },
+  {
+    "name": "BasicRuntimeChecks",
+    "switch": "RTC1",
+    "comment": "Both (/RTC1, equiv. to /RTCsu)",
+    "value": "EnableFastChecks",
+    "flags": []
+  },
+  {
+    "name": "BasicRuntimeChecks",
+    "switch": "",
+    "comment": "Default",
+    "value": "Default",
+    "flags": []
+  },
+  {
+    "name": "RuntimeLibrary",
+    "switch": "MT",
+    "comment": "Multi-threaded",
+    "value": "MultiThreaded",
+    "flags": []
+  },
+  {
+    "name": "RuntimeLibrary",
+    "switch": "MTd",
+    "comment": "Multi-threaded Debug",
+    "value": "MultiThreadedDebug",
+    "flags": []
+  },
+  {
+    "name": "RuntimeLibrary",
+    "switch": "MD",
+    "comment": "Multi-threaded DLL",
+    "value": "MultiThreadedDLL",
+    "flags": []
+  },
+  {
+    "name": "RuntimeLibrary",
+    "switch": "MDd",
+    "comment": "Multi-threaded Debug DLL",
+    "value": "MultiThreadedDebugDLL",
+    "flags": []
+  },
+  {
+    "name": "StructMemberAlignment",
+    "switch": "Zp1",
+    "comment": "1 Byte",
+    "value": "1Byte",
+    "flags": []
+  },
+  {
+    "name": "StructMemberAlignment",
+    "switch": "Zp2",
+    "comment": "2 Bytes",
+    "value": "2Bytes",
+    "flags": []
+  },
+  {
+    "name": "StructMemberAlignment",
+    "switch": "Zp4",
+    "comment": "4 Byte",
+    "value": "4Bytes",
+    "flags": []
+  },
+  {
+    "name": "StructMemberAlignment",
+    "switch": "Zp8",
+    "comment": "8 Bytes",
+    "value": "8Bytes",
+    "flags": []
+  },
+  {
+    "name": "StructMemberAlignment",
+    "switch": "Zp16",
+    "comment": "16 Bytes",
+    "value": "16Bytes",
+    "flags": []
+  },
+  {
+    "name": "StructMemberAlignment",
+    "switch": "",
+    "comment": "Default",
+    "value": "Default",
+    "flags": []
+  },
+  {
+    "name": "EnableEnhancedInstructionSet",
+    "switch": "arch:SSE",
+    "comment": "Streaming SIMD Extensions",
+    "value": "StreamingSIMDExtensions",
+    "flags": []
+  },
+  {
+    "name": "EnableEnhancedInstructionSet",
+    "switch": "arch:SSE2",
+    "comment": "Streaming SIMD Extensions 2",
+    "value": "StreamingSIMDExtensions2",
+    "flags": []
+  },
+  {
+    "name": "EnableEnhancedInstructionSet",
+    "switch": "arch:AVX",
+    "comment": "Advanced Vector Extensions",
+    "value": "AdvancedVectorExtensions",
+    "flags": []
+  },
+  {
+    "name": "EnableEnhancedInstructionSet",
+    "switch": "arch:IA32",
+    "comment": "No Enhanced Instructions",
+    "value": "NoExtensions",
+    "flags": []
+  },
+  {
+    "name": "EnableEnhancedInstructionSet",
+    "switch": "",
+    "comment": "Not Set",
+    "value": "NotSet",
+    "flags": []
+  },
+  {
+    "name": "FloatingPointModel",
+    "switch": "fp:precise",
+    "comment": "Precise",
+    "value": "Precise",
+    "flags": []
+  },
+  {
+    "name": "FloatingPointModel",
+    "switch": "fp:strict",
+    "comment": "Strict",
+    "value": "Strict",
+    "flags": []
+  },
+  {
+    "name": "FloatingPointModel",
+    "switch": "fp:fast",
+    "comment": "Fast",
+    "value": "Fast",
+    "flags": []
+  },
+  {
+    "name": "PrecompiledHeader",
+    "switch": "Yc",
+    "comment": "Create",
+    "value": "Create",
+    "flags": [
+      "UserValue",
+      "UserIgnored",
+      "Continue"
+    ]
+  },
+  {
+    "name": "PrecompiledHeader",
+    "switch": "Yu",
+    "comment": "Use",
+    "value": "Use",
+    "flags": [
+      "UserValue",
+      "UserIgnored",
+      "Continue"
+    ]
+  },
+  {
+    "name": "PrecompiledHeader",
+    "switch": "",
+    "comment": "Not Using Precompiled Headers",
+    "value": "NotUsing",
+    "flags": []
+  },
+  {
+    "name": "AssemblerOutput",
+    "switch": "",
+    "comment": "No Listing",
+    "value": "NoListing",
+    "flags": []
+  },
+  {
+    "name": "AssemblerOutput",
+    "switch": "FA",
+    "comment": "Assembly-Only Listing",
+    "value": "AssemblyCode",
+    "flags": []
+  },
+  {
+    "name": "AssemblerOutput",
+    "switch": "FAc",
+    "comment": "Assembly With Machine Code",
+    "value": "AssemblyAndMachineCode",
+    "flags": []
+  },
+  {
+    "name": "AssemblerOutput",
+    "switch": "FAs",
+    "comment": "Assembly With Source Code",
+    "value": "AssemblyAndSourceCode",
+    "flags": []
+  },
+  {
+    "name": "AssemblerOutput",
+    "switch": "FAcs",
+    "comment": "Assembly, Machine Code and Source",
+    "value": "All",
+    "flags": []
+  },
+  {
+    "name": "CallingConvention",
+    "switch": "Gd",
+    "comment": "__cdecl",
+    "value": "Cdecl",
+    "flags": []
+  },
+  {
+    "name": "CallingConvention",
+    "switch": "Gr",
+    "comment": "__fastcall",
+    "value": "FastCall",
+    "flags": []
+  },
+  {
+    "name": "CallingConvention",
+    "switch": "Gz",
+    "comment": "__stdcall",
+    "value": "StdCall",
+    "flags": []
+  },
+  {
+    "name": "CompileAs",
+    "switch": "",
+    "comment": "Default",
+    "value": "Default",
+    "flags": []
+  },
+  {
+    "name": "CompileAs",
+    "switch": "TC",
+    "comment": "Compile as C Code",
+    "value": "CompileAsC",
+    "flags": []
+  },
+  {
+    "name": "CompileAs",
+    "switch": "TP",
+    "comment": "Compile as C++ Code",
+    "value": "CompileAsCpp",
+    "flags": []
+  },
+  {
+    "name": "ErrorReporting",
+    "switch": "errorReport:none",
+    "comment": "Do Not Send Report",
+    "value": "None",
+    "flags": []
+  },
+  {
+    "name": "ErrorReporting",
+    "switch": "errorReport:prompt",
+    "comment": "Prompt Immediately",
+    "value": "Prompt",
+    "flags": []
+  },
+  {
+    "name": "ErrorReporting",
+    "switch": "errorReport:queue",
+    "comment": "Queue For Next Login",
+    "value": "Queue",
+    "flags": []
+  },
+  {
+    "name": "ErrorReporting",
+    "switch": "errorReport:send",
+    "comment": "Send Automatically",
+    "value": "Send",
+    "flags": []
+  },
+  {
+    "name": "CompileAsWinRT",
+    "switch": "ZW",
+    "comment": "Consume Windows Runtime Extension",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "WinRTNoStdLib",
+    "switch": "ZW:nostdlib",
+    "comment": "No Standard WinRT Libraries",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "SuppressStartupBanner",
+    "switch": "nologo-",
+    "comment": "Suppress Startup Banner",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "SuppressStartupBanner",
+    "switch": "nologo",
+    "comment": "Suppress Startup Banner",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "TreatWarningAsError",
+    "switch": "WX-",
+    "comment": "Treat Warnings As Errors",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "TreatWarningAsError",
+    "switch": "WX",
+    "comment": "Treat Warnings As Errors",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "SDLCheck",
+    "switch": "sdl-",
+    "comment": "SDL checks",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "SDLCheck",
+    "switch": "sdl",
+    "comment": "SDL checks",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "MultiProcessorCompilation",
+    "switch": "MP",
+    "comment": "Multi-processor Compilation",
+    "value": "true",
+    "flags": [
+      "UserValue",
+      "UserIgnored",
+      "Continue"
+    ]
+  },
+  {
+    "name": "IntrinsicFunctions",
+    "switch": "Oi",
+    "comment": "Enable Intrinsic Functions",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "OmitFramePointers",
+    "switch": "Oy-",
+    "comment": "Omit Frame Pointers",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "OmitFramePointers",
+    "switch": "Oy",
+    "comment": "Omit Frame Pointers",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "EnableFiberSafeOptimizations",
+    "switch": "GT",
+    "comment": "Enable Fiber-Safe Optimizations",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "WholeProgramOptimization",
+    "switch": "GL",
+    "comment": "Whole Program Optimization",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "UndefineAllPreprocessorDefinitions",
+    "switch": "u",
+    "comment": "Undefine All Preprocessor Definitions",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "IgnoreStandardIncludePath",
+    "switch": "X",
+    "comment": "Ignore Standard Include Paths",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "PreprocessToFile",
+    "switch": "P",
+    "comment": "Preprocess to a File",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "PreprocessSuppressLineNumbers",
+    "switch": "EP",
+    "comment": "Preprocess Suppress Line Numbers",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "PreprocessKeepComments",
+    "switch": "C",
+    "comment": "Keep Comments",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "StringPooling",
+    "switch": "GF-",
+    "comment": "Enable String Pooling",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "StringPooling",
+    "switch": "GF",
+    "comment": "Enable String Pooling",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "MinimalRebuild",
+    "switch": "Gm-",
+    "comment": "Enable Minimal Rebuild",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "MinimalRebuild",
+    "switch": "Gm",
+    "comment": "Enable Minimal Rebuild",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "SmallerTypeCheck",
+    "switch": "RTCc",
+    "comment": "Smaller Type Check",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "BufferSecurityCheck",
+    "switch": "GS-",
+    "comment": "Security Check",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "BufferSecurityCheck",
+    "switch": "GS",
+    "comment": "Security Check",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "FunctionLevelLinking",
+    "switch": "Gy-",
+    "comment": "Enable Function-Level Linking",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "FunctionLevelLinking",
+    "switch": "Gy",
+    "comment": "Enable Function-Level Linking",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "EnableParallelCodeGeneration",
+    "switch": "Qpar-",
+    "comment": "Enable Parallel Code Generation",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "EnableParallelCodeGeneration",
+    "switch": "Qpar",
+    "comment": "Enable Parallel Code Generation",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "FloatingPointExceptions",
+    "switch": "fp:except-",
+    "comment": "Enable Floating Point Exceptions",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "FloatingPointExceptions",
+    "switch": "fp:except",
+    "comment": "Enable Floating Point Exceptions",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "CreateHotpatchableImage",
+    "switch": "hotpatch",
+    "comment": "Create Hotpatchable Image",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "DisableLanguageExtensions",
+    "switch": "Za",
+    "comment": "Disable Language Extensions",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "TreatWChar_tAsBuiltInType",
+    "switch": "Zc:wchar_t-",
+    "comment": "Treat WChar_t As Built in Type",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "TreatWChar_tAsBuiltInType",
+    "switch": "Zc:wchar_t",
+    "comment": "Treat WChar_t As Built in Type",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "ForceConformanceInForLoopScope",
+    "switch": "Zc:forScope-",
+    "comment": "Force Conformance in For Loop Scope",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "ForceConformanceInForLoopScope",
+    "switch": "Zc:forScope",
+    "comment": "Force Conformance in For Loop Scope",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "RuntimeTypeInfo",
+    "switch": "GR-",
+    "comment": "Enable Run-Time Type Information",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "RuntimeTypeInfo",
+    "switch": "GR",
+    "comment": "Enable Run-Time Type Information",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "OpenMPSupport",
+    "switch": "openmp-",
+    "comment": "Open MP Support",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "OpenMPSupport",
+    "switch": "openmp",
+    "comment": "Open MP Support",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "ExpandAttributedSource",
+    "switch": "Fx",
+    "comment": "Expand Attributed Source",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "UseUnicodeForAssemblerListing",
+    "switch": "FAu",
+    "comment": "Use Unicode For Assembler Listing",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "GenerateXMLDocumentationFiles",
+    "switch": "doc",
+    "comment": "Generate XML Documentation Files",
+    "value": "true",
+    "flags": [
+      "UserValue",
+      "UserIgnored",
+      "Continue"
+    ]
+  },
+  {
+    "name": "BrowseInformation",
+    "switch": "FR",
+    "comment": "Enable Browse Information",
+    "value": "true",
+    "flags": [
+      "UserValue",
+      "UserIgnored",
+      "Continue"
+    ]
+  },
+  {
+    "name": "ShowIncludes",
+    "switch": "showIncludes",
+    "comment": "Show Includes",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "EnablePREfast",
+    "switch": "analyze-",
+    "comment": "Enable Code Analysis",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "EnablePREfast",
+    "switch": "analyze",
+    "comment": "Enable Code Analysis",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "UseFullPaths",
+    "switch": "FC",
+    "comment": "Use Full Paths",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "OmitDefaultLibName",
+    "switch": "Zl",
+    "comment": "Omit Default Library Name",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "AdditionalIncludeDirectories",
+    "switch": "I",
+    "comment": "Additional Include Directories",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "AdditionalUsingDirectories",
+    "switch": "AI",
+    "comment": "Additional #using Directories",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "PreprocessorDefinitions",
+    "switch": "D",
+    "comment": "Preprocessor Definitions",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "UndefinePreprocessorDefinitions",
+    "switch": "U",
+    "comment": "Undefine Preprocessor Definitions",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "DisableSpecificWarnings",
+    "switch": "wd",
+    "comment": "Disable Specific Warnings",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "ForcedIncludeFiles",
+    "switch": "FI",
+    "comment": "Forced Include File",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "ForcedUsingFiles",
+    "switch": "FU",
+    "comment": "Forced #using File",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "PREfastAdditionalOptions",
+    "switch": "analyze:",
+    "comment": "Additional Code Analysis Native options",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "PREfastAdditionalPlugins",
+    "switch": "analyze:plugin",
+    "comment": "Additional Code Analysis Native plugins",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "TreatSpecificWarningsAsErrors",
+    "switch": "we",
+    "comment": "Treat Specific Warnings As Errors",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "PreprocessOutputPath",
+    "switch": "Fi",
+    "comment": "Preprocess Output Path",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "PrecompiledHeaderFile",
+    "switch": "Yu",
+    "comment": "Precompiled Header File",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "UserRequired"
+    ]
+  },
+  {
+    "name": "PrecompiledHeaderFile",
+    "switch": "Yc",
+    "comment": "Precompiled Header File",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "UserRequired"
+    ]
+  },
+  {
+    "name": "PrecompiledHeaderOutputFile",
+    "switch": "Fp",
+    "comment": "Precompiled Header Output File",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "AssemblerListingLocation",
+    "switch": "Fa",
+    "comment": "ASM List Location",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "ObjectFileName",
+    "switch": "Fo",
+    "comment": "Object File Name",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "ProgramDataBaseFileName",
+    "switch": "Fd",
+    "comment": "Program Database File Name",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "XMLDocumentationFileName",
+    "switch": "doc",
+    "comment": "XML Documentation File Name",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "UserRequired"
+    ]
+  },
+  {
+    "name": "BrowseInformationFile",
+    "switch": "FR",
+    "comment": "Browse Information File",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "UserRequired"
+    ]
+  },
+  {
+    "name": "PREfastLog",
+    "switch": "analyze:log",
+    "comment": "Code Analysis Log",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "ProcessorNumber",
+    "switch": "MP",
+    "comment": "Number of processors",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "UserRequired"
+    ]
+  }
+]

+ 297 - 0
Templates/MSBuild/FlagTables/v11_LIB.json

@@ -0,0 +1,297 @@
+[
+  {
+    "name": "ErrorReporting",
+    "switch": "ERRORREPORT:PROMPT",
+    "comment": "PromptImmediately",
+    "value": "PromptImmediately",
+    "flags": []
+  },
+  {
+    "name": "ErrorReporting",
+    "switch": "ERRORREPORT:QUEUE",
+    "comment": "Queue For Next Login",
+    "value": "QueueForNextLogin",
+    "flags": []
+  },
+  {
+    "name": "ErrorReporting",
+    "switch": "ERRORREPORT:SEND",
+    "comment": "Send Error Report",
+    "value": "SendErrorReport",
+    "flags": []
+  },
+  {
+    "name": "ErrorReporting",
+    "switch": "ERRORREPORT:NONE",
+    "comment": "No Error Report",
+    "value": "NoErrorReport",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:ARM",
+    "comment": "MachineARM",
+    "value": "MachineARM",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:EBC",
+    "comment": "MachineEBC",
+    "value": "MachineEBC",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:IA64",
+    "comment": "MachineIA64",
+    "value": "MachineIA64",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:MIPS",
+    "comment": "MachineMIPS",
+    "value": "MachineMIPS",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:MIPS16",
+    "comment": "MachineMIPS16",
+    "value": "MachineMIPS16",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:MIPSFPU",
+    "comment": "MachineMIPSFPU",
+    "value": "MachineMIPSFPU",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:MIPSFPU16",
+    "comment": "MachineMIPSFPU16",
+    "value": "MachineMIPSFPU16",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:SH4",
+    "comment": "MachineSH4",
+    "value": "MachineSH4",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:THUMB",
+    "comment": "MachineTHUMB",
+    "value": "MachineTHUMB",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:X64",
+    "comment": "MachineX64",
+    "value": "MachineX64",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:X86",
+    "comment": "MachineX86",
+    "value": "MachineX86",
+    "flags": []
+  },
+  {
+    "name": "SubSystem",
+    "switch": "SUBSYSTEM:CONSOLE",
+    "comment": "Console",
+    "value": "Console",
+    "flags": []
+  },
+  {
+    "name": "SubSystem",
+    "switch": "SUBSYSTEM:WINDOWS",
+    "comment": "Windows",
+    "value": "Windows",
+    "flags": []
+  },
+  {
+    "name": "SubSystem",
+    "switch": "SUBSYSTEM:NATIVE",
+    "comment": "Native",
+    "value": "Native",
+    "flags": []
+  },
+  {
+    "name": "SubSystem",
+    "switch": "SUBSYSTEM:EFI_APPLICATION",
+    "comment": "EFI Application",
+    "value": "EFI Application",
+    "flags": []
+  },
+  {
+    "name": "SubSystem",
+    "switch": "SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER",
+    "comment": "EFI Boot Service Driver",
+    "value": "EFI Boot Service Driver",
+    "flags": []
+  },
+  {
+    "name": "SubSystem",
+    "switch": "SUBSYSTEM:EFI_ROM",
+    "comment": "EFI ROM",
+    "value": "EFI ROM",
+    "flags": []
+  },
+  {
+    "name": "SubSystem",
+    "switch": "SUBSYSTEM:EFI_RUNTIME_DRIVER",
+    "comment": "EFI Runtime",
+    "value": "EFI Runtime",
+    "flags": []
+  },
+  {
+    "name": "SubSystem",
+    "switch": "SUBSYSTEM:WINDOWSCE",
+    "comment": "WindowsCE",
+    "value": "WindowsCE",
+    "flags": []
+  },
+  {
+    "name": "SubSystem",
+    "switch": "SUBSYSTEM:POSIX",
+    "comment": "POSIX",
+    "value": "POSIX",
+    "flags": []
+  },
+  {
+    "name": "SuppressStartupBanner",
+    "switch": "NOLOGO",
+    "comment": "Suppress Startup Banner",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "IgnoreAllDefaultLibraries",
+    "switch": "NODEFAULTLIB",
+    "comment": "Ignore All Default Libraries",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "TreatLibWarningAsErrors",
+    "switch": "WX:NO",
+    "comment": "Treat Lib Warning As Errors",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "TreatLibWarningAsErrors",
+    "switch": "WX",
+    "comment": "Treat Lib Warning As Errors",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "Verbose",
+    "switch": "VERBOSE",
+    "comment": "Verbose",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "LinkTimeCodeGeneration",
+    "switch": "LTCG",
+    "comment": "Link Time Code Generation",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "AdditionalLibraryDirectories",
+    "switch": "LIBPATH:",
+    "comment": "Additional Library Directories",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "IgnoreSpecificDefaultLibraries",
+    "switch": "NODEFAULTLIB:",
+    "comment": "Ignore Specific Default Libraries",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "ExportNamedFunctions",
+    "switch": "EXPORT:",
+    "comment": "Export Named Functions",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "RemoveObjects",
+    "switch": "REMOVE:",
+    "comment": "Remove Objects",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "OutputFile",
+    "switch": "OUT:",
+    "comment": "Output File",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "ModuleDefinitionFile",
+    "switch": "DEF:",
+    "comment": "Module Definition File Name",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "ForceSymbolReferences",
+    "switch": "INCLUDE:",
+    "comment": "Force Symbol References",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "DisplayLibrary",
+    "switch": "LIST:",
+    "comment": "Display Library to standard output",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "Name",
+    "switch": "NAME:",
+    "comment": "Name",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  }
+]

+ 1291 - 0
Templates/MSBuild/FlagTables/v11_Link.json

@@ -0,0 +1,1291 @@
+[
+  {
+    "name": "ShowProgress",
+    "switch": "",
+    "comment": "Not Set",
+    "value": "NotSet",
+    "flags": []
+  },
+  {
+    "name": "ShowProgress",
+    "switch": "VERBOSE",
+    "comment": "Display all progress messages",
+    "value": "LinkVerbose",
+    "flags": []
+  },
+  {
+    "name": "ShowProgress",
+    "switch": "VERBOSE:Lib",
+    "comment": "For Libraries Searched",
+    "value": "LinkVerboseLib",
+    "flags": []
+  },
+  {
+    "name": "ShowProgress",
+    "switch": "VERBOSE:ICF",
+    "comment": "About COMDAT folding during optimized linking",
+    "value": "LinkVerboseICF",
+    "flags": []
+  },
+  {
+    "name": "ShowProgress",
+    "switch": "VERBOSE:REF",
+    "comment": "About data removed during optimized linking",
+    "value": "LinkVerboseREF",
+    "flags": []
+  },
+  {
+    "name": "ShowProgress",
+    "switch": "VERBOSE:SAFESEH",
+    "comment": "About Modules incompatible with SEH",
+    "value": "LinkVerboseSAFESEH",
+    "flags": []
+  },
+  {
+    "name": "ShowProgress",
+    "switch": "VERBOSE:CLR",
+    "comment": "About linker activity related to managed code",
+    "value": "LinkVerboseCLR",
+    "flags": []
+  },
+  {
+    "name": "ForceFileOutput",
+    "switch": "FORCE",
+    "comment": "Enabled",
+    "value": "Enabled",
+    "flags": []
+  },
+  {
+    "name": "ForceFileOutput",
+    "switch": "FORCE:MULTIPLE",
+    "comment": "Multiply Defined Symbol Only",
+    "value": "MultiplyDefinedSymbolOnly",
+    "flags": []
+  },
+  {
+    "name": "ForceFileOutput",
+    "switch": "FORCE:UNRESOLVED",
+    "comment": "Undefined Symbol Only",
+    "value": "UndefinedSymbolOnly",
+    "flags": []
+  },
+  {
+    "name": "CreateHotPatchableImage",
+    "switch": "FUNCTIONPADMIN",
+    "comment": "Enabled",
+    "value": "Enabled",
+    "flags": []
+  },
+  {
+    "name": "CreateHotPatchableImage",
+    "switch": "FUNCTIONPADMIN:5",
+    "comment": "X86 Image Only",
+    "value": "X86Image",
+    "flags": []
+  },
+  {
+    "name": "CreateHotPatchableImage",
+    "switch": "FUNCTIONPADMIN:6",
+    "comment": "X64 Image Only",
+    "value": "X64Image",
+    "flags": []
+  },
+  {
+    "name": "CreateHotPatchableImage",
+    "switch": "FUNCTIONPADMIN:16",
+    "comment": "Itanium Image Only",
+    "value": "ItaniumImage",
+    "flags": []
+  },
+  {
+    "name": "UACExecutionLevel",
+    "switch": "level='asInvoker'",
+    "comment": "asInvoker",
+    "value": "AsInvoker",
+    "flags": []
+  },
+  {
+    "name": "UACExecutionLevel",
+    "switch": "level='highestAvailable'",
+    "comment": "highestAvailable",
+    "value": "HighestAvailable",
+    "flags": []
+  },
+  {
+    "name": "UACExecutionLevel",
+    "switch": "level='requireAdministrator'",
+    "comment": "requireAdministrator",
+    "value": "RequireAdministrator",
+    "flags": []
+  },
+  {
+    "name": "SubSystem",
+    "switch": "",
+    "comment": "Not Set",
+    "value": "NotSet",
+    "flags": []
+  },
+  {
+    "name": "SubSystem",
+    "switch": "SUBSYSTEM:CONSOLE",
+    "comment": "Console",
+    "value": "Console",
+    "flags": []
+  },
+  {
+    "name": "SubSystem",
+    "switch": "SUBSYSTEM:WINDOWS",
+    "comment": "Windows",
+    "value": "Windows",
+    "flags": []
+  },
+  {
+    "name": "SubSystem",
+    "switch": "SUBSYSTEM:NATIVE",
+    "comment": "Native",
+    "value": "Native",
+    "flags": []
+  },
+  {
+    "name": "SubSystem",
+    "switch": "SUBSYSTEM:EFI_APPLICATION",
+    "comment": "EFI Application",
+    "value": "EFI Application",
+    "flags": []
+  },
+  {
+    "name": "SubSystem",
+    "switch": "SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER",
+    "comment": "EFI Boot Service Driver",
+    "value": "EFI Boot Service Driver",
+    "flags": []
+  },
+  {
+    "name": "SubSystem",
+    "switch": "SUBSYSTEM:EFI_ROM",
+    "comment": "EFI ROM",
+    "value": "EFI ROM",
+    "flags": []
+  },
+  {
+    "name": "SubSystem",
+    "switch": "SUBSYSTEM:EFI_RUNTIME_DRIVER",
+    "comment": "EFI Runtime",
+    "value": "EFI Runtime",
+    "flags": []
+  },
+  {
+    "name": "SubSystem",
+    "switch": "SUBSYSTEM:POSIX",
+    "comment": "POSIX",
+    "value": "POSIX",
+    "flags": []
+  },
+  {
+    "name": "Driver",
+    "switch": "",
+    "comment": "Not Set",
+    "value": "NotSet",
+    "flags": []
+  },
+  {
+    "name": "Driver",
+    "switch": "Driver",
+    "comment": "Driver",
+    "value": "Driver",
+    "flags": []
+  },
+  {
+    "name": "Driver",
+    "switch": "DRIVER:UPONLY",
+    "comment": "UP Only",
+    "value": "UpOnly",
+    "flags": []
+  },
+  {
+    "name": "Driver",
+    "switch": "DRIVER:WDM",
+    "comment": "WDM",
+    "value": "WDM",
+    "flags": []
+  },
+  {
+    "name": "LinkTimeCodeGeneration",
+    "switch": "",
+    "comment": "Default",
+    "value": "Default",
+    "flags": []
+  },
+  {
+    "name": "LinkTimeCodeGeneration",
+    "switch": "LTCG",
+    "comment": "Use Link Time Code Generation",
+    "value": "UseLinkTimeCodeGeneration",
+    "flags": []
+  },
+  {
+    "name": "LinkTimeCodeGeneration",
+    "switch": "LTCG:PGInstrument",
+    "comment": "Profile Guided Optimization - Instrument",
+    "value": "PGInstrument",
+    "flags": []
+  },
+  {
+    "name": "LinkTimeCodeGeneration",
+    "switch": "LTCG:PGOptimize",
+    "comment": "Profile Guided Optimization - Optimization",
+    "value": "PGOptimization",
+    "flags": []
+  },
+  {
+    "name": "LinkTimeCodeGeneration",
+    "switch": "LTCG:PGUpdate",
+    "comment": "Profile Guided Optimization - Update",
+    "value": "PGUpdate",
+    "flags": []
+  },
+  {
+    "name": "GenerateWindowsMetadata",
+    "switch": "WINMD",
+    "comment": "Yes",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "GenerateWindowsMetadata",
+    "switch": "WINMD:NO",
+    "comment": "No",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "WindowsMetadataSignHash",
+    "switch": "WINMDSIGNHASH:SHA1",
+    "comment": "SHA1",
+    "value": "SHA1",
+    "flags": []
+  },
+  {
+    "name": "WindowsMetadataSignHash",
+    "switch": "WINMDSIGNHASH:SHA256",
+    "comment": "SHA256",
+    "value": "SHA256",
+    "flags": []
+  },
+  {
+    "name": "WindowsMetadataSignHash",
+    "switch": "WINMDSIGNHASH:SHA384",
+    "comment": "SHA384",
+    "value": "SHA384",
+    "flags": []
+  },
+  {
+    "name": "WindowsMetadataSignHash",
+    "switch": "WINMDSIGNHASH:SHA512",
+    "comment": "SHA512",
+    "value": "SHA512",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "",
+    "comment": "Not Set",
+    "value": "NotSet",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:ARM",
+    "comment": "MachineARM",
+    "value": "MachineARM",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:EBC",
+    "comment": "MachineEBC",
+    "value": "MachineEBC",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:IA64",
+    "comment": "MachineIA64",
+    "value": "MachineIA64",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:MIPS",
+    "comment": "MachineMIPS",
+    "value": "MachineMIPS",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:MIPS16",
+    "comment": "MachineMIPS16",
+    "value": "MachineMIPS16",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:MIPSFPU",
+    "comment": "MachineMIPSFPU",
+    "value": "MachineMIPSFPU",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:MIPSFPU16",
+    "comment": "MachineMIPSFPU16",
+    "value": "MachineMIPSFPU16",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:SH4",
+    "comment": "MachineSH4",
+    "value": "MachineSH4",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:THUMB",
+    "comment": "MachineTHUMB",
+    "value": "MachineTHUMB",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:X64",
+    "comment": "MachineX64",
+    "value": "MachineX64",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:X86",
+    "comment": "MachineX86",
+    "value": "MachineX86",
+    "flags": []
+  },
+  {
+    "name": "CLRThreadAttribute",
+    "switch": "CLRTHREADATTRIBUTE:MTA",
+    "comment": "MTA threading attribute",
+    "value": "MTAThreadingAttribute",
+    "flags": []
+  },
+  {
+    "name": "CLRThreadAttribute",
+    "switch": "CLRTHREADATTRIBUTE:STA",
+    "comment": "STA threading attribute",
+    "value": "STAThreadingAttribute",
+    "flags": []
+  },
+  {
+    "name": "CLRThreadAttribute",
+    "switch": "CLRTHREADATTRIBUTE:NONE",
+    "comment": "Default threading attribute",
+    "value": "DefaultThreadingAttribute",
+    "flags": []
+  },
+  {
+    "name": "CLRImageType",
+    "switch": "CLRIMAGETYPE:IJW",
+    "comment": "Force IJW image",
+    "value": "ForceIJWImage",
+    "flags": []
+  },
+  {
+    "name": "CLRImageType",
+    "switch": "CLRIMAGETYPE:PURE",
+    "comment": "Force Pure IL Image",
+    "value": "ForcePureILImage",
+    "flags": []
+  },
+  {
+    "name": "CLRImageType",
+    "switch": "CLRIMAGETYPE:SAFE",
+    "comment": "Force Safe IL Image",
+    "value": "ForceSafeILImage",
+    "flags": []
+  },
+  {
+    "name": "CLRImageType",
+    "switch": "",
+    "comment": "Default image type",
+    "value": "Default",
+    "flags": []
+  },
+  {
+    "name": "SignHash",
+    "switch": "CLRSIGNHASH:SHA1",
+    "comment": "SHA1",
+    "value": "SHA1",
+    "flags": []
+  },
+  {
+    "name": "SignHash",
+    "switch": "CLRSIGNHASH:SHA256",
+    "comment": "SHA256",
+    "value": "SHA256",
+    "flags": []
+  },
+  {
+    "name": "SignHash",
+    "switch": "CLRSIGNHASH:SHA384",
+    "comment": "SHA384",
+    "value": "SHA384",
+    "flags": []
+  },
+  {
+    "name": "SignHash",
+    "switch": "CLRSIGNHASH:SHA512",
+    "comment": "SHA512",
+    "value": "SHA512",
+    "flags": []
+  },
+  {
+    "name": "LinkErrorReporting",
+    "switch": "ERRORREPORT:PROMPT",
+    "comment": "PromptImmediately",
+    "value": "PromptImmediately",
+    "flags": []
+  },
+  {
+    "name": "LinkErrorReporting",
+    "switch": "ERRORREPORT:QUEUE",
+    "comment": "Queue For Next Login",
+    "value": "QueueForNextLogin",
+    "flags": []
+  },
+  {
+    "name": "LinkErrorReporting",
+    "switch": "ERRORREPORT:SEND",
+    "comment": "Send Error Report",
+    "value": "SendErrorReport",
+    "flags": []
+  },
+  {
+    "name": "LinkErrorReporting",
+    "switch": "ERRORREPORT:NONE",
+    "comment": "No Error Report",
+    "value": "NoErrorReport",
+    "flags": []
+  },
+  {
+    "name": "CLRSupportLastError",
+    "switch": "CLRSupportLastError",
+    "comment": "Enabled",
+    "value": "Enabled",
+    "flags": []
+  },
+  {
+    "name": "CLRSupportLastError",
+    "switch": "CLRSupportLastError:NO",
+    "comment": "Disabled",
+    "value": "Disabled",
+    "flags": []
+  },
+  {
+    "name": "CLRSupportLastError",
+    "switch": "CLRSupportLastError:SYSTEMDLL",
+    "comment": "System Dlls Only",
+    "value": "SystemDlls",
+    "flags": []
+  },
+  {
+    "name": "LinkIncremental",
+    "switch": "INCREMENTAL:NO",
+    "comment": "Enable Incremental Linking",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "LinkIncremental",
+    "switch": "INCREMENTAL",
+    "comment": "Enable Incremental Linking",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "SuppressStartupBanner",
+    "switch": "NOLOGO",
+    "comment": "Suppress Startup Banner",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "LinkStatus",
+    "switch": "LTCG:NOSTATUS",
+    "comment": "Link Status",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "LinkStatus",
+    "switch": "LTCG:STATUS",
+    "comment": "Link Status",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "PreventDllBinding",
+    "switch": "ALLOWBIND:NO",
+    "comment": "Prevent Dll Binding",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "PreventDllBinding",
+    "switch": "ALLOWBIND",
+    "comment": "Prevent Dll Binding",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "TreatLinkerWarningAsErrors",
+    "switch": "WX:NO",
+    "comment": "Treat Linker Warning As Errors",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "TreatLinkerWarningAsErrors",
+    "switch": "WX",
+    "comment": "Treat Linker Warning As Errors",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "IgnoreAllDefaultLibraries",
+    "switch": "NODEFAULTLIB",
+    "comment": "Ignore All Default Libraries",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "GenerateManifest",
+    "switch": "MANIFEST:NO",
+    "comment": "Generate Manifest",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "GenerateManifest",
+    "switch": "MANIFEST",
+    "comment": "Generate Manifest",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "AllowIsolation",
+    "switch": "ALLOWISOLATION:NO",
+    "comment": "Allow Isolation",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "AllowIsolation",
+    "switch": "",
+    "comment": "Allow Isolation",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "EnableUAC",
+    "switch": "MANIFESTUAC:NO",
+    "comment": "Enable User Account Control (UAC)",
+    "value": "false",
+    "flags": [
+      "UserValue",
+      "UserIgnored",
+      "Continue"
+    ]
+  },
+  {
+    "name": "EnableUAC",
+    "switch": "MANIFESTUAC:",
+    "comment": "Enable User Account Control (UAC)",
+    "value": "true",
+    "flags": [
+      "UserValue",
+      "UserIgnored",
+      "Continue"
+    ]
+  },
+  {
+    "name": "UACUIAccess",
+    "switch": "uiAccess='false'",
+    "comment": "UAC Bypass UI Protection",
+    "value": "false",
+    "flags": [
+      "UserValue",
+      "UserRequired"
+    ]
+  },
+  {
+    "name": "UACUIAccess",
+    "switch": "MANIFESTUAC:",
+    "comment": "UAC Bypass UI Protection",
+    "value": "true",
+    "flags": [
+      "UserValue",
+      "UserRequired"
+    ]
+  },
+  {
+    "name": "UACUIAccess",
+    "switch": "uiAccess='false'",
+    "comment": "UAC Bypass UI Protection",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "UACUIAccess",
+    "switch": "uiAccess='true'",
+    "comment": "UAC Bypass UI Protection",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "ManifestEmbed",
+    "switch": "manifest:embed",
+    "comment": "Embed Manifest",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "GenerateDebugInformation",
+    "switch": "DEBUG",
+    "comment": "Generate Debug Info",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "GenerateMapFile",
+    "switch": "MAP",
+    "comment": "Generate Map File",
+    "value": "true",
+    "flags": [
+      "UserValue",
+      "UserIgnored",
+      "Continue"
+    ]
+  },
+  {
+    "name": "MapExports",
+    "switch": "MAPINFO:EXPORTS",
+    "comment": "Map Exports",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "AssemblyDebug",
+    "switch": "ASSEMBLYDEBUG:DISABLE",
+    "comment": "Debuggable Assembly",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "AssemblyDebug",
+    "switch": "ASSEMBLYDEBUG",
+    "comment": "Debuggable Assembly",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "LargeAddressAware",
+    "switch": "LARGEADDRESSAWARE:NO",
+    "comment": "Enable Large Addresses",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "LargeAddressAware",
+    "switch": "LARGEADDRESSAWARE",
+    "comment": "Enable Large Addresses",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "TerminalServerAware",
+    "switch": "TSAWARE:NO",
+    "comment": "Terminal Server",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "TerminalServerAware",
+    "switch": "TSAWARE",
+    "comment": "Terminal Server",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "SwapRunFromCD",
+    "switch": "SWAPRUN:CD",
+    "comment": "Swap Run From CD",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "SwapRunFromNET",
+    "switch": "SWAPRUN:NET",
+    "comment": "Swap Run From Network",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "OptimizeReferences",
+    "switch": "OPT:NOREF",
+    "comment": "References",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "OptimizeReferences",
+    "switch": "OPT:REF",
+    "comment": "References",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "EnableCOMDATFolding",
+    "switch": "OPT:NOICF",
+    "comment": "Enable COMDAT Folding",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "EnableCOMDATFolding",
+    "switch": "OPT:ICF",
+    "comment": "Enable COMDAT Folding",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "IgnoreEmbeddedIDL",
+    "switch": "IGNOREIDL",
+    "comment": "Ignore Embedded IDL",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "AppContainer",
+    "switch": "APPCONTAINER",
+    "comment": "",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "WindowsMetadataLinkDelaySign",
+    "switch": "WINMDDELAYSIGN:NO",
+    "comment": "Windows Metadata Delay Sign",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "WindowsMetadataLinkDelaySign",
+    "switch": "WINMDDELAYSIGN",
+    "comment": "Windows Metadata Delay Sign",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "NoEntryPoint",
+    "switch": "NOENTRY",
+    "comment": "No Entry Point",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "SetChecksum",
+    "switch": "RELEASE",
+    "comment": "Set Checksum",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "RandomizedBaseAddress",
+    "switch": "DYNAMICBASE:NO",
+    "comment": "Randomized Base Address",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "RandomizedBaseAddress",
+    "switch": "DYNAMICBASE",
+    "comment": "Randomized Base Address",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "FixedBaseAddress",
+    "switch": "FIXED:NO",
+    "comment": "Fixed Base Address",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "FixedBaseAddress",
+    "switch": "FIXED",
+    "comment": "Fixed Base Address",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "DataExecutionPrevention",
+    "switch": "NXCOMPAT:NO",
+    "comment": "Data Execution Prevention (DEP)",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "DataExecutionPrevention",
+    "switch": "NXCOMPAT",
+    "comment": "Data Execution Prevention (DEP)",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "TurnOffAssemblyGeneration",
+    "switch": "NOASSEMBLY",
+    "comment": "Turn Off Assembly Generation",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "SupportUnloadOfDelayLoadedDLL",
+    "switch": "DELAY:UNLOAD",
+    "comment": "Unload delay loaded DLL",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "SupportNobindOfDelayLoadedDLL",
+    "switch": "DELAY:NOBIND",
+    "comment": "Nobind delay loaded DLL",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "Profile",
+    "switch": "PROFILE",
+    "comment": "Profile",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "LinkDelaySign",
+    "switch": "DELAYSIGN:NO",
+    "comment": "Delay Sign",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "LinkDelaySign",
+    "switch": "DELAYSIGN",
+    "comment": "Delay Sign",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "CLRUnmanagedCodeCheck",
+    "switch": "CLRUNMANAGEDCODECHECK:NO",
+    "comment": "CLR Unmanaged Code Check",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "CLRUnmanagedCodeCheck",
+    "switch": "CLRUNMANAGEDCODECHECK",
+    "comment": "CLR Unmanaged Code Check",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "DetectOneDefinitionRule",
+    "switch": "ODR",
+    "comment": "Detect One Definition Rule violations",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "ImageHasSafeExceptionHandlers",
+    "switch": "SAFESEH:NO",
+    "comment": "Image Has Safe Exception Handlers",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "ImageHasSafeExceptionHandlers",
+    "switch": "SAFESEH",
+    "comment": "Image Has Safe Exception Handlers",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "LinkDLL",
+    "switch": "DLL",
+    "comment": "",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "AdditionalLibraryDirectories",
+    "switch": "LIBPATH:",
+    "comment": "Additional Library Directories",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "IgnoreSpecificDefaultLibraries",
+    "switch": "NODEFAULTLIB:",
+    "comment": "Ignore Specific Default Libraries",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "AddModuleNamesToAssembly",
+    "switch": "ASSEMBLYMODULE:",
+    "comment": "Add Module to Assembly",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "EmbedManagedResourceFile",
+    "switch": "ASSEMBLYRESOURCE:",
+    "comment": "Embed Managed Resource File",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "ForceSymbolReferences",
+    "switch": "INCLUDE:",
+    "comment": "Force Symbol References",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "DelayLoadDLLs",
+    "switch": "DELAYLOAD:",
+    "comment": "Delay Loaded Dlls",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "AssemblyLinkResource",
+    "switch": "ASSEMBLYLINKRESOURCE:",
+    "comment": "Assembly Link Resource",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "AdditionalManifestDependencies",
+    "switch": "MANIFESTDEPENDENCY:",
+    "comment": "Additional Manifest Dependencies",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "ManifestInput",
+    "switch": "manifestinput:",
+    "comment": "Manifest Input",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "OutputFile",
+    "switch": "OUT:",
+    "comment": "Output File",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "Version",
+    "switch": "VERSION:",
+    "comment": "Version",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "SpecifySectionAttributes",
+    "switch": "SECTION:",
+    "comment": "Specify Section Attributes",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "MSDOSStubFileName",
+    "switch": "STUB:",
+    "comment": "MS-DOS Stub File Name",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "ModuleDefinitionFile",
+    "switch": "DEF:",
+    "comment": "Module Definition File",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "ManifestFile",
+    "switch": "ManifestFile:",
+    "comment": "Manifest File",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "ProgramDatabaseFile",
+    "switch": "PDB:",
+    "comment": "Generate Program Database File",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "StripPrivateSymbols",
+    "switch": "PDBSTRIPPED:",
+    "comment": "Strip Private Symbols",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "MapFileName",
+    "switch": "MAP:",
+    "comment": "Map File Name",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "UserRequired"
+    ]
+  },
+  {
+    "name": "HeapReserveSize",
+    "switch": "HEAP:",
+    "comment": "Heap Reserve Size",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "HeapCommitSize",
+    "switch": "HEAP",
+    "comment": "Heap Commit Size",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "UserRequired"
+    ]
+  },
+  {
+    "name": "StackReserveSize",
+    "switch": "STACK:",
+    "comment": "Stack Reserve Size",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "StackCommitSize",
+    "switch": "STACK",
+    "comment": "Stack Commit Size",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "UserRequired"
+    ]
+  },
+  {
+    "name": "FunctionOrder",
+    "switch": "ORDER:@",
+    "comment": "Function Order",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "ProfileGuidedDatabase",
+    "switch": "PGD:",
+    "comment": "Profile Guided Database",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "MidlCommandFile",
+    "switch": "MIDL:@",
+    "comment": "MIDL Commands",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "MergedIDLBaseFileName",
+    "switch": "IDLOUT:",
+    "comment": "Merged IDL Base File Name",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "TypeLibraryFile",
+    "switch": "TLBOUT:",
+    "comment": "Type Library",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "WindowsMetadataFile",
+    "switch": "WINMDFILE:",
+    "comment": "Windows Metadata File",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "WindowsMetadataLinkKeyFile",
+    "switch": "WINMDKEYFILE:",
+    "comment": "Windows Metadata Key File",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "WindowsMetadataKeyContainer",
+    "switch": "WINMDKEYCONTAINER:",
+    "comment": "Windows Metadata Key Container",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "EntryPointSymbol",
+    "switch": "ENTRY:",
+    "comment": "Entry Point",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "BaseAddress",
+    "switch": "BASE:",
+    "comment": "Base Address",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "ImportLibrary",
+    "switch": "IMPLIB:",
+    "comment": "Import Library",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "MergeSections",
+    "switch": "MERGE:",
+    "comment": "Merge Sections",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "LinkKeyFile",
+    "switch": "KEYFILE:",
+    "comment": "Key File",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "KeyContainer",
+    "switch": "KEYCONTAINER:",
+    "comment": "Key Container",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "TypeLibraryResourceID",
+    "switch": "TLBID:",
+    "comment": "TypeLib Resource ID",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "SectionAlignment",
+    "switch": "ALIGN:",
+    "comment": "SectionAlignment",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  }
+]

+ 295 - 0
Templates/MSBuild/FlagTables/v11_MASM.json

@@ -0,0 +1,295 @@
+[
+  {
+    "name": "PreserveIdentifierCase",
+    "switch": "",
+    "comment": "Default",
+    "value": "0",
+    "flags": []
+  },
+  {
+    "name": "PreserveIdentifierCase",
+    "switch": "Cp",
+    "comment": "Preserves Identifier Case (/Cp)",
+    "value": "1",
+    "flags": []
+  },
+  {
+    "name": "PreserveIdentifierCase",
+    "switch": "Cu",
+    "comment": "Maps all identifiers to upper case. (/Cu)",
+    "value": "2",
+    "flags": []
+  },
+  {
+    "name": "PreserveIdentifierCase",
+    "switch": "Cx",
+    "comment": "Preserves case in public and extern symbols. (/Cx)",
+    "value": "3",
+    "flags": []
+  },
+  {
+    "name": "WarningLevel",
+    "switch": "W0",
+    "comment": "Warning Level 0 (/W0)",
+    "value": "0",
+    "flags": []
+  },
+  {
+    "name": "WarningLevel",
+    "switch": "W1",
+    "comment": "Warning Level 1 (/W1)",
+    "value": "1",
+    "flags": []
+  },
+  {
+    "name": "WarningLevel",
+    "switch": "W2",
+    "comment": "Warning Level 2 (/W2)",
+    "value": "2",
+    "flags": []
+  },
+  {
+    "name": "WarningLevel",
+    "switch": "W3",
+    "comment": "Warning Level 3 (/W3)",
+    "value": "3",
+    "flags": []
+  },
+  {
+    "name": "PackAlignmentBoundary",
+    "switch": "",
+    "comment": "Default",
+    "value": "0",
+    "flags": []
+  },
+  {
+    "name": "PackAlignmentBoundary",
+    "switch": "Zp1",
+    "comment": "One Byte Boundary (/Zp1)",
+    "value": "1",
+    "flags": []
+  },
+  {
+    "name": "PackAlignmentBoundary",
+    "switch": "Zp2",
+    "comment": "Two Byte Boundary (/Zp2)",
+    "value": "2",
+    "flags": []
+  },
+  {
+    "name": "PackAlignmentBoundary",
+    "switch": "Zp4",
+    "comment": "Four Byte Boundary (/Zp4)",
+    "value": "3",
+    "flags": []
+  },
+  {
+    "name": "PackAlignmentBoundary",
+    "switch": "Zp8",
+    "comment": "Eight Byte Boundary (/Zp8)",
+    "value": "4",
+    "flags": []
+  },
+  {
+    "name": "PackAlignmentBoundary",
+    "switch": "Zp16",
+    "comment": "Sixteen Byte Boundary (/Zp16)",
+    "value": "5",
+    "flags": []
+  },
+  {
+    "name": "CallingConvention",
+    "switch": "",
+    "comment": "Default",
+    "value": "0",
+    "flags": []
+  },
+  {
+    "name": "CallingConvention",
+    "switch": "Gd",
+    "comment": "Use C-style Calling Convention (/Gd)",
+    "value": "1",
+    "flags": []
+  },
+  {
+    "name": "CallingConvention",
+    "switch": "Gz",
+    "comment": "Use stdcall Calling Convention (/Gz)",
+    "value": "2",
+    "flags": []
+  },
+  {
+    "name": "CallingConvention",
+    "switch": "Gc",
+    "comment": "Use Pascal Calling Convention (/Gc)",
+    "value": "3",
+    "flags": []
+  },
+  {
+    "name": "ErrorReporting",
+    "switch": "errorReport:prompt",
+    "comment": "Prompt to send report immediately (/errorReport:prompt)",
+    "value": "0",
+    "flags": []
+  },
+  {
+    "name": "ErrorReporting",
+    "switch": "errorReport:queue",
+    "comment": "Prompt to send report at the next logon (/errorReport:queue)",
+    "value": "1",
+    "flags": []
+  },
+  {
+    "name": "ErrorReporting",
+    "switch": "errorReport:send",
+    "comment": "Automatically send report (/errorReport:send)",
+    "value": "2",
+    "flags": []
+  },
+  {
+    "name": "ErrorReporting",
+    "switch": "errorReport:none",
+    "comment": "Do not send report (/errorReport:none)",
+    "value": "3",
+    "flags": []
+  },
+  {
+    "name": "NoLogo",
+    "switch": "nologo",
+    "comment": "Suppress Startup Banner",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "GeneratePreprocessedSourceListing",
+    "switch": "EP",
+    "comment": "Generate Preprocessed Source Listing",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "ListAllAvailableInformation",
+    "switch": "Sa",
+    "comment": "List All Available Information",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "UseSafeExceptionHandlers",
+    "switch": "safeseh",
+    "comment": "Use Safe Exception Handlers",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "AddFirstPassListing",
+    "switch": "Sf",
+    "comment": "Add First Pass Listing",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "EnableAssemblyGeneratedCodeListing",
+    "switch": "Sg",
+    "comment": "Enable Assembly Generated Code Listing",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "DisableSymbolTable",
+    "switch": "Sn",
+    "comment": "Disable Symbol Table",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "EnableFalseConditionalsInListing",
+    "switch": "Sx",
+    "comment": "Enable False Conditionals In Listing",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "TreatWarningsAsErrors",
+    "switch": "WX",
+    "comment": "Treat Warnings As Errors",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "MakeAllSymbolsPublic",
+    "switch": "Zf",
+    "comment": "Make All Symbols Public",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "GenerateDebugInformation",
+    "switch": "Zi",
+    "comment": "Generate Debug Information",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "EnableMASM51Compatibility",
+    "switch": "Zm",
+    "comment": "Enable MASM 5.1 Compatibility",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "PerformSyntaxCheckOnly",
+    "switch": "Zs",
+    "comment": "Perform Syntax Check Only",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "PreprocessorDefinitions",
+    "switch": "D\"[value]\"",
+    "comment": "Preprocessor Definitions",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "IncludePaths",
+    "switch": "I \"[value]\"",
+    "comment": "Include Paths",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "BrowseFile",
+    "switch": "FR\"[value]\"",
+    "comment": "Generate Browse Information File",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "ObjectFileName",
+    "switch": "Fo\"[value]\"",
+    "comment": "Object File Name",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "AssembledCodeListingFile",
+    "switch": "Fl\"[value]\"",
+    "comment": "Assembled Code Listing File",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  }
+]

+ 69 - 0
Templates/MSBuild/FlagTables/v11_RC.json

@@ -0,0 +1,69 @@
+[
+  {
+    "name": "IgnoreStandardIncludePath",
+    "switch": "X",
+    "comment": "Ignore Standard Include Paths",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "ShowProgress",
+    "switch": "v",
+    "comment": "Show Progress",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "SuppressStartupBanner",
+    "switch": "nologo",
+    "comment": "Suppress Startup Banner",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "NullTerminateStrings",
+    "switch": "n",
+    "comment": "Null Terminate Strings",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "PreprocessorDefinitions",
+    "switch": "D",
+    "comment": "Preprocessor Definitions",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "UndefinePreprocessorDefinitions",
+    "switch": "u",
+    "comment": "Undefine Preprocessor Definitions",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "AdditionalIncludeDirectories",
+    "switch": "I",
+    "comment": "Additional Include Directories",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "ResourceOutputFileName",
+    "switch": "fo",
+    "comment": "Resource File Name",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  }
+]

+ 1087 - 0
Templates/MSBuild/FlagTables/v12_CL.json

@@ -0,0 +1,1087 @@
+[
+  {
+    "name": "DebugInformationFormat",
+    "switch": "",
+    "comment": "None",
+    "value": "None",
+    "flags": []
+  },
+  {
+    "name": "DebugInformationFormat",
+    "switch": "Z7",
+    "comment": "C7 compatible",
+    "value": "OldStyle",
+    "flags": []
+  },
+  {
+    "name": "DebugInformationFormat",
+    "switch": "Zi",
+    "comment": "Program Database",
+    "value": "ProgramDatabase",
+    "flags": []
+  },
+  {
+    "name": "DebugInformationFormat",
+    "switch": "ZI",
+    "comment": "Program Database for Edit And Continue",
+    "value": "EditAndContinue",
+    "flags": []
+  },
+  {
+    "name": "CompileAsManaged",
+    "switch": "",
+    "comment": "No Common Language RunTime Support",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "CompileAsManaged",
+    "switch": "clr",
+    "comment": "Common Language RunTime Support",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "CompileAsManaged",
+    "switch": "clr:pure",
+    "comment": "Pure MSIL Common Language RunTime Support",
+    "value": "Pure",
+    "flags": []
+  },
+  {
+    "name": "CompileAsManaged",
+    "switch": "clr:safe",
+    "comment": "Safe MSIL Common Language RunTime Support",
+    "value": "Safe",
+    "flags": []
+  },
+  {
+    "name": "CompileAsManaged",
+    "switch": "clr:oldSyntax",
+    "comment": "Common Language RunTime Support, Old Syntax",
+    "value": "OldSyntax",
+    "flags": []
+  },
+  {
+    "name": "WarningLevel",
+    "switch": "W0",
+    "comment": "Turn Off All Warnings",
+    "value": "TurnOffAllWarnings",
+    "flags": []
+  },
+  {
+    "name": "WarningLevel",
+    "switch": "W1",
+    "comment": "Level1",
+    "value": "Level1",
+    "flags": []
+  },
+  {
+    "name": "WarningLevel",
+    "switch": "W2",
+    "comment": "Level2",
+    "value": "Level2",
+    "flags": []
+  },
+  {
+    "name": "WarningLevel",
+    "switch": "W3",
+    "comment": "Level3",
+    "value": "Level3",
+    "flags": []
+  },
+  {
+    "name": "WarningLevel",
+    "switch": "W4",
+    "comment": "Level4",
+    "value": "Level4",
+    "flags": []
+  },
+  {
+    "name": "WarningLevel",
+    "switch": "Wall",
+    "comment": "EnableAllWarnings",
+    "value": "EnableAllWarnings",
+    "flags": []
+  },
+  {
+    "name": "Optimization",
+    "switch": "",
+    "comment": "Custom",
+    "value": "Custom",
+    "flags": []
+  },
+  {
+    "name": "Optimization",
+    "switch": "Od",
+    "comment": "Disabled",
+    "value": "Disabled",
+    "flags": []
+  },
+  {
+    "name": "Optimization",
+    "switch": "O1",
+    "comment": "Minimize Size",
+    "value": "MinSpace",
+    "flags": []
+  },
+  {
+    "name": "Optimization",
+    "switch": "O2",
+    "comment": "Maximize Speed",
+    "value": "MaxSpeed",
+    "flags": []
+  },
+  {
+    "name": "Optimization",
+    "switch": "Ox",
+    "comment": "Full Optimization",
+    "value": "Full",
+    "flags": []
+  },
+  {
+    "name": "InlineFunctionExpansion",
+    "switch": "",
+    "comment": "Default",
+    "value": "Default",
+    "flags": []
+  },
+  {
+    "name": "InlineFunctionExpansion",
+    "switch": "Ob0",
+    "comment": "Disabled",
+    "value": "Disabled",
+    "flags": []
+  },
+  {
+    "name": "InlineFunctionExpansion",
+    "switch": "Ob1",
+    "comment": "Only __inline",
+    "value": "OnlyExplicitInline",
+    "flags": []
+  },
+  {
+    "name": "InlineFunctionExpansion",
+    "switch": "Ob2",
+    "comment": "Any Suitable",
+    "value": "AnySuitable",
+    "flags": []
+  },
+  {
+    "name": "FavorSizeOrSpeed",
+    "switch": "Os",
+    "comment": "Favor small code",
+    "value": "Size",
+    "flags": []
+  },
+  {
+    "name": "FavorSizeOrSpeed",
+    "switch": "Ot",
+    "comment": "Favor fast code",
+    "value": "Speed",
+    "flags": []
+  },
+  {
+    "name": "FavorSizeOrSpeed",
+    "switch": "",
+    "comment": "Neither",
+    "value": "Neither",
+    "flags": []
+  },
+  {
+    "name": "ExceptionHandling",
+    "switch": "EHa",
+    "comment": "Yes with SEH Exceptions",
+    "value": "Async",
+    "flags": []
+  },
+  {
+    "name": "ExceptionHandling",
+    "switch": "EHsc",
+    "comment": "Yes",
+    "value": "Sync",
+    "flags": []
+  },
+  {
+    "name": "ExceptionHandling",
+    "switch": "EHs",
+    "comment": "Yes with Extern C functions",
+    "value": "SyncCThrow",
+    "flags": []
+  },
+  {
+    "name": "ExceptionHandling",
+    "switch": "",
+    "comment": "No",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "BasicRuntimeChecks",
+    "switch": "RTCs",
+    "comment": "Stack Frames",
+    "value": "StackFrameRuntimeCheck",
+    "flags": []
+  },
+  {
+    "name": "BasicRuntimeChecks",
+    "switch": "RTCu",
+    "comment": "Uninitialized variables",
+    "value": "UninitializedLocalUsageCheck",
+    "flags": []
+  },
+  {
+    "name": "BasicRuntimeChecks",
+    "switch": "RTC1",
+    "comment": "Both (/RTC1, equiv. to /RTCsu)",
+    "value": "EnableFastChecks",
+    "flags": []
+  },
+  {
+    "name": "BasicRuntimeChecks",
+    "switch": "",
+    "comment": "Default",
+    "value": "Default",
+    "flags": []
+  },
+  {
+    "name": "RuntimeLibrary",
+    "switch": "MT",
+    "comment": "Multi-threaded",
+    "value": "MultiThreaded",
+    "flags": []
+  },
+  {
+    "name": "RuntimeLibrary",
+    "switch": "MTd",
+    "comment": "Multi-threaded Debug",
+    "value": "MultiThreadedDebug",
+    "flags": []
+  },
+  {
+    "name": "RuntimeLibrary",
+    "switch": "MD",
+    "comment": "Multi-threaded DLL",
+    "value": "MultiThreadedDLL",
+    "flags": []
+  },
+  {
+    "name": "RuntimeLibrary",
+    "switch": "MDd",
+    "comment": "Multi-threaded Debug DLL",
+    "value": "MultiThreadedDebugDLL",
+    "flags": []
+  },
+  {
+    "name": "StructMemberAlignment",
+    "switch": "Zp1",
+    "comment": "1 Byte",
+    "value": "1Byte",
+    "flags": []
+  },
+  {
+    "name": "StructMemberAlignment",
+    "switch": "Zp2",
+    "comment": "2 Bytes",
+    "value": "2Bytes",
+    "flags": []
+  },
+  {
+    "name": "StructMemberAlignment",
+    "switch": "Zp4",
+    "comment": "4 Byte",
+    "value": "4Bytes",
+    "flags": []
+  },
+  {
+    "name": "StructMemberAlignment",
+    "switch": "Zp8",
+    "comment": "8 Bytes",
+    "value": "8Bytes",
+    "flags": []
+  },
+  {
+    "name": "StructMemberAlignment",
+    "switch": "Zp16",
+    "comment": "16 Bytes",
+    "value": "16Bytes",
+    "flags": []
+  },
+  {
+    "name": "StructMemberAlignment",
+    "switch": "",
+    "comment": "Default",
+    "value": "Default",
+    "flags": []
+  },
+  {
+    "name": "BufferSecurityCheck",
+    "switch": "GS-",
+    "comment": "Disable Security Check",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "BufferSecurityCheck",
+    "switch": "GS",
+    "comment": "Enable Security Check",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "EnableEnhancedInstructionSet",
+    "switch": "arch:SSE",
+    "comment": "Streaming SIMD Extensions",
+    "value": "StreamingSIMDExtensions",
+    "flags": []
+  },
+  {
+    "name": "EnableEnhancedInstructionSet",
+    "switch": "arch:SSE2",
+    "comment": "Streaming SIMD Extensions 2",
+    "value": "StreamingSIMDExtensions2",
+    "flags": []
+  },
+  {
+    "name": "EnableEnhancedInstructionSet",
+    "switch": "arch:AVX",
+    "comment": "Advanced Vector Extensions",
+    "value": "AdvancedVectorExtensions",
+    "flags": []
+  },
+  {
+    "name": "EnableEnhancedInstructionSet",
+    "switch": "arch:AVX2",
+    "comment": "Advanced Vector Extensions 2",
+    "value": "AdvancedVectorExtensions2",
+    "flags": []
+  },
+  {
+    "name": "EnableEnhancedInstructionSet",
+    "switch": "arch:IA32",
+    "comment": "No Enhanced Instructions",
+    "value": "NoExtensions",
+    "flags": []
+  },
+  {
+    "name": "EnableEnhancedInstructionSet",
+    "switch": "",
+    "comment": "Not Set",
+    "value": "NotSet",
+    "flags": []
+  },
+  {
+    "name": "FloatingPointModel",
+    "switch": "fp:precise",
+    "comment": "Precise",
+    "value": "Precise",
+    "flags": []
+  },
+  {
+    "name": "FloatingPointModel",
+    "switch": "fp:strict",
+    "comment": "Strict",
+    "value": "Strict",
+    "flags": []
+  },
+  {
+    "name": "FloatingPointModel",
+    "switch": "fp:fast",
+    "comment": "Fast",
+    "value": "Fast",
+    "flags": []
+  },
+  {
+    "name": "PrecompiledHeader",
+    "switch": "Yc",
+    "comment": "Create",
+    "value": "Create",
+    "flags": [
+      "UserValue",
+      "UserIgnored",
+      "Continue"
+    ]
+  },
+  {
+    "name": "PrecompiledHeader",
+    "switch": "Yu",
+    "comment": "Use",
+    "value": "Use",
+    "flags": [
+      "UserValue",
+      "UserIgnored",
+      "Continue"
+    ]
+  },
+  {
+    "name": "PrecompiledHeader",
+    "switch": "",
+    "comment": "Not Using Precompiled Headers",
+    "value": "NotUsing",
+    "flags": []
+  },
+  {
+    "name": "AssemblerOutput",
+    "switch": "",
+    "comment": "No Listing",
+    "value": "NoListing",
+    "flags": []
+  },
+  {
+    "name": "AssemblerOutput",
+    "switch": "FA",
+    "comment": "Assembly-Only Listing",
+    "value": "AssemblyCode",
+    "flags": []
+  },
+  {
+    "name": "AssemblerOutput",
+    "switch": "FAc",
+    "comment": "Assembly With Machine Code",
+    "value": "AssemblyAndMachineCode",
+    "flags": []
+  },
+  {
+    "name": "AssemblerOutput",
+    "switch": "FAs",
+    "comment": "Assembly With Source Code",
+    "value": "AssemblyAndSourceCode",
+    "flags": []
+  },
+  {
+    "name": "AssemblerOutput",
+    "switch": "FAcs",
+    "comment": "Assembly, Machine Code and Source",
+    "value": "All",
+    "flags": []
+  },
+  {
+    "name": "CallingConvention",
+    "switch": "Gd",
+    "comment": "__cdecl",
+    "value": "Cdecl",
+    "flags": []
+  },
+  {
+    "name": "CallingConvention",
+    "switch": "Gr",
+    "comment": "__fastcall",
+    "value": "FastCall",
+    "flags": []
+  },
+  {
+    "name": "CallingConvention",
+    "switch": "Gz",
+    "comment": "__stdcall",
+    "value": "StdCall",
+    "flags": []
+  },
+  {
+    "name": "CallingConvention",
+    "switch": "Gv",
+    "comment": "__vectorcall",
+    "value": "VectorCall",
+    "flags": []
+  },
+  {
+    "name": "CompileAs",
+    "switch": "",
+    "comment": "Default",
+    "value": "Default",
+    "flags": []
+  },
+  {
+    "name": "CompileAs",
+    "switch": "TC",
+    "comment": "Compile as C Code",
+    "value": "CompileAsC",
+    "flags": []
+  },
+  {
+    "name": "CompileAs",
+    "switch": "TP",
+    "comment": "Compile as C++ Code",
+    "value": "CompileAsCpp",
+    "flags": []
+  },
+  {
+    "name": "ErrorReporting",
+    "switch": "errorReport:none",
+    "comment": "Do Not Send Report",
+    "value": "None",
+    "flags": []
+  },
+  {
+    "name": "ErrorReporting",
+    "switch": "errorReport:prompt",
+    "comment": "Prompt Immediately",
+    "value": "Prompt",
+    "flags": []
+  },
+  {
+    "name": "ErrorReporting",
+    "switch": "errorReport:queue",
+    "comment": "Queue For Next Login",
+    "value": "Queue",
+    "flags": []
+  },
+  {
+    "name": "ErrorReporting",
+    "switch": "errorReport:send",
+    "comment": "Send Automatically",
+    "value": "Send",
+    "flags": []
+  },
+  {
+    "name": "CompileAsWinRT",
+    "switch": "ZW",
+    "comment": "Consume Windows Runtime Extension",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "WinRTNoStdLib",
+    "switch": "ZW:nostdlib",
+    "comment": "No Standard WinRT Libraries",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "SuppressStartupBanner",
+    "switch": "nologo",
+    "comment": "Suppress Startup Banner",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "TreatWarningAsError",
+    "switch": "WX-",
+    "comment": "Treat Warnings As Errors",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "TreatWarningAsError",
+    "switch": "WX",
+    "comment": "Treat Warnings As Errors",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "SDLCheck",
+    "switch": "sdl-",
+    "comment": "SDL checks",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "SDLCheck",
+    "switch": "sdl",
+    "comment": "SDL checks",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "MultiProcessorCompilation",
+    "switch": "MP",
+    "comment": "Multi-processor Compilation",
+    "value": "true",
+    "flags": [
+      "UserValue",
+      "UserIgnored",
+      "Continue"
+    ]
+  },
+  {
+    "name": "IntrinsicFunctions",
+    "switch": "Oi",
+    "comment": "Enable Intrinsic Functions",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "OmitFramePointers",
+    "switch": "Oy-",
+    "comment": "Omit Frame Pointers",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "OmitFramePointers",
+    "switch": "Oy",
+    "comment": "Omit Frame Pointers",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "EnableFiberSafeOptimizations",
+    "switch": "GT",
+    "comment": "Enable Fiber-Safe Optimizations",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "WholeProgramOptimization",
+    "switch": "GL",
+    "comment": "Whole Program Optimization",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "UndefineAllPreprocessorDefinitions",
+    "switch": "u",
+    "comment": "Undefine All Preprocessor Definitions",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "IgnoreStandardIncludePath",
+    "switch": "X",
+    "comment": "Ignore Standard Include Paths",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "PreprocessToFile",
+    "switch": "P",
+    "comment": "Preprocess to a File",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "PreprocessSuppressLineNumbers",
+    "switch": "EP",
+    "comment": "Preprocess Suppress Line Numbers",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "PreprocessKeepComments",
+    "switch": "C",
+    "comment": "Keep Comments",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "StringPooling",
+    "switch": "GF-",
+    "comment": "Enable String Pooling",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "StringPooling",
+    "switch": "GF",
+    "comment": "Enable String Pooling",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "MinimalRebuild",
+    "switch": "Gm-",
+    "comment": "Enable Minimal Rebuild",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "MinimalRebuild",
+    "switch": "Gm",
+    "comment": "Enable Minimal Rebuild",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "SmallerTypeCheck",
+    "switch": "RTCc",
+    "comment": "Smaller Type Check",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "FunctionLevelLinking",
+    "switch": "Gy-",
+    "comment": "Enable Function-Level Linking",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "FunctionLevelLinking",
+    "switch": "Gy",
+    "comment": "Enable Function-Level Linking",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "EnableParallelCodeGeneration",
+    "switch": "Qpar-",
+    "comment": "Enable Parallel Code Generation",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "EnableParallelCodeGeneration",
+    "switch": "Qpar",
+    "comment": "Enable Parallel Code Generation",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "FloatingPointExceptions",
+    "switch": "fp:except-",
+    "comment": "Enable Floating Point Exceptions",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "FloatingPointExceptions",
+    "switch": "fp:except",
+    "comment": "Enable Floating Point Exceptions",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "CreateHotpatchableImage",
+    "switch": "hotpatch",
+    "comment": "Create Hotpatchable Image",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "DisableLanguageExtensions",
+    "switch": "Za",
+    "comment": "Disable Language Extensions",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "TreatWChar_tAsBuiltInType",
+    "switch": "Zc:wchar_t-",
+    "comment": "Treat WChar_t As Built in Type",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "TreatWChar_tAsBuiltInType",
+    "switch": "Zc:wchar_t",
+    "comment": "Treat WChar_t As Built in Type",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "ForceConformanceInForLoopScope",
+    "switch": "Zc:forScope-",
+    "comment": "Force Conformance in For Loop Scope",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "ForceConformanceInForLoopScope",
+    "switch": "Zc:forScope",
+    "comment": "Force Conformance in For Loop Scope",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "RuntimeTypeInfo",
+    "switch": "GR-",
+    "comment": "Enable Run-Time Type Information",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "RuntimeTypeInfo",
+    "switch": "GR",
+    "comment": "Enable Run-Time Type Information",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "OpenMPSupport",
+    "switch": "openmp-",
+    "comment": "Open MP Support",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "OpenMPSupport",
+    "switch": "openmp",
+    "comment": "Open MP Support",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "ExpandAttributedSource",
+    "switch": "Fx",
+    "comment": "Expand Attributed Source",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "UseUnicodeForAssemblerListing",
+    "switch": "FAu",
+    "comment": "Use Unicode For Assembler Listing",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "GenerateXMLDocumentationFiles",
+    "switch": "doc",
+    "comment": "Generate XML Documentation Files",
+    "value": "true",
+    "flags": [
+      "UserValue",
+      "UserIgnored",
+      "Continue"
+    ]
+  },
+  {
+    "name": "BrowseInformation",
+    "switch": "FR",
+    "comment": "Enable Browse Information",
+    "value": "true",
+    "flags": [
+      "UserValue",
+      "UserIgnored",
+      "Continue"
+    ]
+  },
+  {
+    "name": "ShowIncludes",
+    "switch": "showIncludes",
+    "comment": "Show Includes",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "EnablePREfast",
+    "switch": "analyze-",
+    "comment": "Enable Code Analysis",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "EnablePREfast",
+    "switch": "analyze",
+    "comment": "Enable Code Analysis",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "UseFullPaths",
+    "switch": "FC",
+    "comment": "Use Full Paths",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "OmitDefaultLibName",
+    "switch": "Zl",
+    "comment": "Omit Default Library Name",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "AdditionalIncludeDirectories",
+    "switch": "I",
+    "comment": "Additional Include Directories",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "AdditionalUsingDirectories",
+    "switch": "AI",
+    "comment": "Additional #using Directories",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "PreprocessorDefinitions",
+    "switch": "D",
+    "comment": "Preprocessor Definitions",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "UndefinePreprocessorDefinitions",
+    "switch": "U",
+    "comment": "Undefine Preprocessor Definitions",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "DisableSpecificWarnings",
+    "switch": "wd",
+    "comment": "Disable Specific Warnings",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "ForcedIncludeFiles",
+    "switch": "FI",
+    "comment": "Forced Include File",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "ForcedUsingFiles",
+    "switch": "FU",
+    "comment": "Forced #using File",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "PREfastAdditionalOptions",
+    "switch": "analyze:",
+    "comment": "Additional Code Analysis Native options",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "PREfastAdditionalPlugins",
+    "switch": "analyze:plugin",
+    "comment": "Additional Code Analysis Native plugins",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "TreatSpecificWarningsAsErrors",
+    "switch": "we",
+    "comment": "Treat Specific Warnings As Errors",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "PreprocessOutputPath",
+    "switch": "Fi",
+    "comment": "Preprocess Output Path",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "PrecompiledHeaderFile",
+    "switch": "Yu",
+    "comment": "Precompiled Header File",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "UserRequired"
+    ]
+  },
+  {
+    "name": "PrecompiledHeaderFile",
+    "switch": "Yc",
+    "comment": "Precompiled Header File",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "UserRequired"
+    ]
+  },
+  {
+    "name": "PrecompiledHeaderOutputFile",
+    "switch": "Fp",
+    "comment": "Precompiled Header Output File",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "AssemblerListingLocation",
+    "switch": "Fa",
+    "comment": "ASM List Location",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "ObjectFileName",
+    "switch": "Fo",
+    "comment": "Object File Name",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "ProgramDataBaseFileName",
+    "switch": "Fd",
+    "comment": "Program Database File Name",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "XMLDocumentationFileName",
+    "switch": "doc",
+    "comment": "XML Documentation File Name",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "UserRequired"
+    ]
+  },
+  {
+    "name": "BrowseInformationFile",
+    "switch": "FR",
+    "comment": "Browse Information File",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "UserRequired"
+    ]
+  },
+  {
+    "name": "PREfastLog",
+    "switch": "analyze:log",
+    "comment": "Code Analysis Log",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "ProcessorNumber",
+    "switch": "MP",
+    "comment": "Number of processors",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "UserRequired"
+    ]
+  }
+]

+ 297 - 0
Templates/MSBuild/FlagTables/v12_LIB.json

@@ -0,0 +1,297 @@
+[
+  {
+    "name": "ErrorReporting",
+    "switch": "ERRORREPORT:PROMPT",
+    "comment": "PromptImmediately",
+    "value": "PromptImmediately",
+    "flags": []
+  },
+  {
+    "name": "ErrorReporting",
+    "switch": "ERRORREPORT:QUEUE",
+    "comment": "Queue For Next Login",
+    "value": "QueueForNextLogin",
+    "flags": []
+  },
+  {
+    "name": "ErrorReporting",
+    "switch": "ERRORREPORT:SEND",
+    "comment": "Send Error Report",
+    "value": "SendErrorReport",
+    "flags": []
+  },
+  {
+    "name": "ErrorReporting",
+    "switch": "ERRORREPORT:NONE",
+    "comment": "No Error Report",
+    "value": "NoErrorReport",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:ARM",
+    "comment": "MachineARM",
+    "value": "MachineARM",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:EBC",
+    "comment": "MachineEBC",
+    "value": "MachineEBC",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:IA64",
+    "comment": "MachineIA64",
+    "value": "MachineIA64",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:MIPS",
+    "comment": "MachineMIPS",
+    "value": "MachineMIPS",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:MIPS16",
+    "comment": "MachineMIPS16",
+    "value": "MachineMIPS16",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:MIPSFPU",
+    "comment": "MachineMIPSFPU",
+    "value": "MachineMIPSFPU",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:MIPSFPU16",
+    "comment": "MachineMIPSFPU16",
+    "value": "MachineMIPSFPU16",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:SH4",
+    "comment": "MachineSH4",
+    "value": "MachineSH4",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:THUMB",
+    "comment": "MachineTHUMB",
+    "value": "MachineTHUMB",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:X64",
+    "comment": "MachineX64",
+    "value": "MachineX64",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:X86",
+    "comment": "MachineX86",
+    "value": "MachineX86",
+    "flags": []
+  },
+  {
+    "name": "SubSystem",
+    "switch": "SUBSYSTEM:CONSOLE",
+    "comment": "Console",
+    "value": "Console",
+    "flags": []
+  },
+  {
+    "name": "SubSystem",
+    "switch": "SUBSYSTEM:WINDOWS",
+    "comment": "Windows",
+    "value": "Windows",
+    "flags": []
+  },
+  {
+    "name": "SubSystem",
+    "switch": "SUBSYSTEM:NATIVE",
+    "comment": "Native",
+    "value": "Native",
+    "flags": []
+  },
+  {
+    "name": "SubSystem",
+    "switch": "SUBSYSTEM:EFI_APPLICATION",
+    "comment": "EFI Application",
+    "value": "EFI Application",
+    "flags": []
+  },
+  {
+    "name": "SubSystem",
+    "switch": "SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER",
+    "comment": "EFI Boot Service Driver",
+    "value": "EFI Boot Service Driver",
+    "flags": []
+  },
+  {
+    "name": "SubSystem",
+    "switch": "SUBSYSTEM:EFI_ROM",
+    "comment": "EFI ROM",
+    "value": "EFI ROM",
+    "flags": []
+  },
+  {
+    "name": "SubSystem",
+    "switch": "SUBSYSTEM:EFI_RUNTIME_DRIVER",
+    "comment": "EFI Runtime",
+    "value": "EFI Runtime",
+    "flags": []
+  },
+  {
+    "name": "SubSystem",
+    "switch": "SUBSYSTEM:WINDOWSCE",
+    "comment": "WindowsCE",
+    "value": "WindowsCE",
+    "flags": []
+  },
+  {
+    "name": "SubSystem",
+    "switch": "SUBSYSTEM:POSIX",
+    "comment": "POSIX",
+    "value": "POSIX",
+    "flags": []
+  },
+  {
+    "name": "SuppressStartupBanner",
+    "switch": "NOLOGO",
+    "comment": "Suppress Startup Banner",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "IgnoreAllDefaultLibraries",
+    "switch": "NODEFAULTLIB",
+    "comment": "Ignore All Default Libraries",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "TreatLibWarningAsErrors",
+    "switch": "WX:NO",
+    "comment": "Treat Lib Warning As Errors",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "TreatLibWarningAsErrors",
+    "switch": "WX",
+    "comment": "Treat Lib Warning As Errors",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "Verbose",
+    "switch": "VERBOSE",
+    "comment": "Verbose",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "LinkTimeCodeGeneration",
+    "switch": "LTCG",
+    "comment": "Link Time Code Generation",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "AdditionalLibraryDirectories",
+    "switch": "LIBPATH:",
+    "comment": "Additional Library Directories",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "IgnoreSpecificDefaultLibraries",
+    "switch": "NODEFAULTLIB:",
+    "comment": "Ignore Specific Default Libraries",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "ExportNamedFunctions",
+    "switch": "EXPORT:",
+    "comment": "Export Named Functions",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "RemoveObjects",
+    "switch": "REMOVE:",
+    "comment": "Remove Objects",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "OutputFile",
+    "switch": "OUT:",
+    "comment": "Output File",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "ModuleDefinitionFile",
+    "switch": "DEF:",
+    "comment": "Module Definition File Name",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "ForceSymbolReferences",
+    "switch": "INCLUDE:",
+    "comment": "Force Symbol References",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "DisplayLibrary",
+    "switch": "LIST:",
+    "comment": "Display Library to standard output",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "Name",
+    "switch": "NAME:",
+    "comment": "Name",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  }
+]

+ 1291 - 0
Templates/MSBuild/FlagTables/v12_Link.json

@@ -0,0 +1,1291 @@
+[
+  {
+    "name": "ShowProgress",
+    "switch": "",
+    "comment": "Not Set",
+    "value": "NotSet",
+    "flags": []
+  },
+  {
+    "name": "ShowProgress",
+    "switch": "VERBOSE",
+    "comment": "Display all progress messages",
+    "value": "LinkVerbose",
+    "flags": []
+  },
+  {
+    "name": "ShowProgress",
+    "switch": "VERBOSE:Lib",
+    "comment": "For Libraries Searched",
+    "value": "LinkVerboseLib",
+    "flags": []
+  },
+  {
+    "name": "ShowProgress",
+    "switch": "VERBOSE:ICF",
+    "comment": "About COMDAT folding during optimized linking",
+    "value": "LinkVerboseICF",
+    "flags": []
+  },
+  {
+    "name": "ShowProgress",
+    "switch": "VERBOSE:REF",
+    "comment": "About data removed during optimized linking",
+    "value": "LinkVerboseREF",
+    "flags": []
+  },
+  {
+    "name": "ShowProgress",
+    "switch": "VERBOSE:SAFESEH",
+    "comment": "About Modules incompatible with SEH",
+    "value": "LinkVerboseSAFESEH",
+    "flags": []
+  },
+  {
+    "name": "ShowProgress",
+    "switch": "VERBOSE:CLR",
+    "comment": "About linker activity related to managed code",
+    "value": "LinkVerboseCLR",
+    "flags": []
+  },
+  {
+    "name": "ForceFileOutput",
+    "switch": "FORCE",
+    "comment": "Enabled",
+    "value": "Enabled",
+    "flags": []
+  },
+  {
+    "name": "ForceFileOutput",
+    "switch": "FORCE:MULTIPLE",
+    "comment": "Multiply Defined Symbol Only",
+    "value": "MultiplyDefinedSymbolOnly",
+    "flags": []
+  },
+  {
+    "name": "ForceFileOutput",
+    "switch": "FORCE:UNRESOLVED",
+    "comment": "Undefined Symbol Only",
+    "value": "UndefinedSymbolOnly",
+    "flags": []
+  },
+  {
+    "name": "CreateHotPatchableImage",
+    "switch": "FUNCTIONPADMIN",
+    "comment": "Enabled",
+    "value": "Enabled",
+    "flags": []
+  },
+  {
+    "name": "CreateHotPatchableImage",
+    "switch": "FUNCTIONPADMIN:5",
+    "comment": "X86 Image Only",
+    "value": "X86Image",
+    "flags": []
+  },
+  {
+    "name": "CreateHotPatchableImage",
+    "switch": "FUNCTIONPADMIN:6",
+    "comment": "X64 Image Only",
+    "value": "X64Image",
+    "flags": []
+  },
+  {
+    "name": "CreateHotPatchableImage",
+    "switch": "FUNCTIONPADMIN:16",
+    "comment": "Itanium Image Only",
+    "value": "ItaniumImage",
+    "flags": []
+  },
+  {
+    "name": "UACExecutionLevel",
+    "switch": "level='asInvoker'",
+    "comment": "asInvoker",
+    "value": "AsInvoker",
+    "flags": []
+  },
+  {
+    "name": "UACExecutionLevel",
+    "switch": "level='highestAvailable'",
+    "comment": "highestAvailable",
+    "value": "HighestAvailable",
+    "flags": []
+  },
+  {
+    "name": "UACExecutionLevel",
+    "switch": "level='requireAdministrator'",
+    "comment": "requireAdministrator",
+    "value": "RequireAdministrator",
+    "flags": []
+  },
+  {
+    "name": "SubSystem",
+    "switch": "",
+    "comment": "Not Set",
+    "value": "NotSet",
+    "flags": []
+  },
+  {
+    "name": "SubSystem",
+    "switch": "SUBSYSTEM:CONSOLE",
+    "comment": "Console",
+    "value": "Console",
+    "flags": []
+  },
+  {
+    "name": "SubSystem",
+    "switch": "SUBSYSTEM:WINDOWS",
+    "comment": "Windows",
+    "value": "Windows",
+    "flags": []
+  },
+  {
+    "name": "SubSystem",
+    "switch": "SUBSYSTEM:NATIVE",
+    "comment": "Native",
+    "value": "Native",
+    "flags": []
+  },
+  {
+    "name": "SubSystem",
+    "switch": "SUBSYSTEM:EFI_APPLICATION",
+    "comment": "EFI Application",
+    "value": "EFI Application",
+    "flags": []
+  },
+  {
+    "name": "SubSystem",
+    "switch": "SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER",
+    "comment": "EFI Boot Service Driver",
+    "value": "EFI Boot Service Driver",
+    "flags": []
+  },
+  {
+    "name": "SubSystem",
+    "switch": "SUBSYSTEM:EFI_ROM",
+    "comment": "EFI ROM",
+    "value": "EFI ROM",
+    "flags": []
+  },
+  {
+    "name": "SubSystem",
+    "switch": "SUBSYSTEM:EFI_RUNTIME_DRIVER",
+    "comment": "EFI Runtime",
+    "value": "EFI Runtime",
+    "flags": []
+  },
+  {
+    "name": "SubSystem",
+    "switch": "SUBSYSTEM:POSIX",
+    "comment": "POSIX",
+    "value": "POSIX",
+    "flags": []
+  },
+  {
+    "name": "Driver",
+    "switch": "",
+    "comment": "Not Set",
+    "value": "NotSet",
+    "flags": []
+  },
+  {
+    "name": "Driver",
+    "switch": "Driver",
+    "comment": "Driver",
+    "value": "Driver",
+    "flags": []
+  },
+  {
+    "name": "Driver",
+    "switch": "DRIVER:UPONLY",
+    "comment": "UP Only",
+    "value": "UpOnly",
+    "flags": []
+  },
+  {
+    "name": "Driver",
+    "switch": "DRIVER:WDM",
+    "comment": "WDM",
+    "value": "WDM",
+    "flags": []
+  },
+  {
+    "name": "LinkTimeCodeGeneration",
+    "switch": "",
+    "comment": "Default",
+    "value": "Default",
+    "flags": []
+  },
+  {
+    "name": "LinkTimeCodeGeneration",
+    "switch": "LTCG",
+    "comment": "Use Link Time Code Generation",
+    "value": "UseLinkTimeCodeGeneration",
+    "flags": []
+  },
+  {
+    "name": "LinkTimeCodeGeneration",
+    "switch": "LTCG:PGInstrument",
+    "comment": "Profile Guided Optimization - Instrument",
+    "value": "PGInstrument",
+    "flags": []
+  },
+  {
+    "name": "LinkTimeCodeGeneration",
+    "switch": "LTCG:PGOptimize",
+    "comment": "Profile Guided Optimization - Optimization",
+    "value": "PGOptimization",
+    "flags": []
+  },
+  {
+    "name": "LinkTimeCodeGeneration",
+    "switch": "LTCG:PGUpdate",
+    "comment": "Profile Guided Optimization - Update",
+    "value": "PGUpdate",
+    "flags": []
+  },
+  {
+    "name": "GenerateWindowsMetadata",
+    "switch": "WINMD",
+    "comment": "Yes",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "GenerateWindowsMetadata",
+    "switch": "WINMD:NO",
+    "comment": "No",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "WindowsMetadataSignHash",
+    "switch": "WINMDSIGNHASH:SHA1",
+    "comment": "SHA1",
+    "value": "SHA1",
+    "flags": []
+  },
+  {
+    "name": "WindowsMetadataSignHash",
+    "switch": "WINMDSIGNHASH:SHA256",
+    "comment": "SHA256",
+    "value": "SHA256",
+    "flags": []
+  },
+  {
+    "name": "WindowsMetadataSignHash",
+    "switch": "WINMDSIGNHASH:SHA384",
+    "comment": "SHA384",
+    "value": "SHA384",
+    "flags": []
+  },
+  {
+    "name": "WindowsMetadataSignHash",
+    "switch": "WINMDSIGNHASH:SHA512",
+    "comment": "SHA512",
+    "value": "SHA512",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "",
+    "comment": "Not Set",
+    "value": "NotSet",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:ARM",
+    "comment": "MachineARM",
+    "value": "MachineARM",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:EBC",
+    "comment": "MachineEBC",
+    "value": "MachineEBC",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:IA64",
+    "comment": "MachineIA64",
+    "value": "MachineIA64",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:MIPS",
+    "comment": "MachineMIPS",
+    "value": "MachineMIPS",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:MIPS16",
+    "comment": "MachineMIPS16",
+    "value": "MachineMIPS16",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:MIPSFPU",
+    "comment": "MachineMIPSFPU",
+    "value": "MachineMIPSFPU",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:MIPSFPU16",
+    "comment": "MachineMIPSFPU16",
+    "value": "MachineMIPSFPU16",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:SH4",
+    "comment": "MachineSH4",
+    "value": "MachineSH4",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:THUMB",
+    "comment": "MachineTHUMB",
+    "value": "MachineTHUMB",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:X64",
+    "comment": "MachineX64",
+    "value": "MachineX64",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:X86",
+    "comment": "MachineX86",
+    "value": "MachineX86",
+    "flags": []
+  },
+  {
+    "name": "CLRThreadAttribute",
+    "switch": "CLRTHREADATTRIBUTE:MTA",
+    "comment": "MTA threading attribute",
+    "value": "MTAThreadingAttribute",
+    "flags": []
+  },
+  {
+    "name": "CLRThreadAttribute",
+    "switch": "CLRTHREADATTRIBUTE:STA",
+    "comment": "STA threading attribute",
+    "value": "STAThreadingAttribute",
+    "flags": []
+  },
+  {
+    "name": "CLRThreadAttribute",
+    "switch": "CLRTHREADATTRIBUTE:NONE",
+    "comment": "Default threading attribute",
+    "value": "DefaultThreadingAttribute",
+    "flags": []
+  },
+  {
+    "name": "CLRImageType",
+    "switch": "CLRIMAGETYPE:IJW",
+    "comment": "Force IJW image",
+    "value": "ForceIJWImage",
+    "flags": []
+  },
+  {
+    "name": "CLRImageType",
+    "switch": "CLRIMAGETYPE:PURE",
+    "comment": "Force Pure IL Image",
+    "value": "ForcePureILImage",
+    "flags": []
+  },
+  {
+    "name": "CLRImageType",
+    "switch": "CLRIMAGETYPE:SAFE",
+    "comment": "Force Safe IL Image",
+    "value": "ForceSafeILImage",
+    "flags": []
+  },
+  {
+    "name": "CLRImageType",
+    "switch": "",
+    "comment": "Default image type",
+    "value": "Default",
+    "flags": []
+  },
+  {
+    "name": "SignHash",
+    "switch": "CLRSIGNHASH:SHA1",
+    "comment": "SHA1",
+    "value": "SHA1",
+    "flags": []
+  },
+  {
+    "name": "SignHash",
+    "switch": "CLRSIGNHASH:SHA256",
+    "comment": "SHA256",
+    "value": "SHA256",
+    "flags": []
+  },
+  {
+    "name": "SignHash",
+    "switch": "CLRSIGNHASH:SHA384",
+    "comment": "SHA384",
+    "value": "SHA384",
+    "flags": []
+  },
+  {
+    "name": "SignHash",
+    "switch": "CLRSIGNHASH:SHA512",
+    "comment": "SHA512",
+    "value": "SHA512",
+    "flags": []
+  },
+  {
+    "name": "LinkErrorReporting",
+    "switch": "ERRORREPORT:PROMPT",
+    "comment": "PromptImmediately",
+    "value": "PromptImmediately",
+    "flags": []
+  },
+  {
+    "name": "LinkErrorReporting",
+    "switch": "ERRORREPORT:QUEUE",
+    "comment": "Queue For Next Login",
+    "value": "QueueForNextLogin",
+    "flags": []
+  },
+  {
+    "name": "LinkErrorReporting",
+    "switch": "ERRORREPORT:SEND",
+    "comment": "Send Error Report",
+    "value": "SendErrorReport",
+    "flags": []
+  },
+  {
+    "name": "LinkErrorReporting",
+    "switch": "ERRORREPORT:NONE",
+    "comment": "No Error Report",
+    "value": "NoErrorReport",
+    "flags": []
+  },
+  {
+    "name": "CLRSupportLastError",
+    "switch": "CLRSupportLastError",
+    "comment": "Enabled",
+    "value": "Enabled",
+    "flags": []
+  },
+  {
+    "name": "CLRSupportLastError",
+    "switch": "CLRSupportLastError:NO",
+    "comment": "Disabled",
+    "value": "Disabled",
+    "flags": []
+  },
+  {
+    "name": "CLRSupportLastError",
+    "switch": "CLRSupportLastError:SYSTEMDLL",
+    "comment": "System Dlls Only",
+    "value": "SystemDlls",
+    "flags": []
+  },
+  {
+    "name": "LinkIncremental",
+    "switch": "INCREMENTAL:NO",
+    "comment": "Enable Incremental Linking",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "LinkIncremental",
+    "switch": "INCREMENTAL",
+    "comment": "Enable Incremental Linking",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "SuppressStartupBanner",
+    "switch": "NOLOGO",
+    "comment": "Suppress Startup Banner",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "LinkStatus",
+    "switch": "LTCG:NOSTATUS",
+    "comment": "Link Status",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "LinkStatus",
+    "switch": "LTCG:STATUS",
+    "comment": "Link Status",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "PreventDllBinding",
+    "switch": "ALLOWBIND:NO",
+    "comment": "Prevent Dll Binding",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "PreventDllBinding",
+    "switch": "ALLOWBIND",
+    "comment": "Prevent Dll Binding",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "TreatLinkerWarningAsErrors",
+    "switch": "WX:NO",
+    "comment": "Treat Linker Warning As Errors",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "TreatLinkerWarningAsErrors",
+    "switch": "WX",
+    "comment": "Treat Linker Warning As Errors",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "IgnoreAllDefaultLibraries",
+    "switch": "NODEFAULTLIB",
+    "comment": "Ignore All Default Libraries",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "GenerateManifest",
+    "switch": "MANIFEST:NO",
+    "comment": "Generate Manifest",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "GenerateManifest",
+    "switch": "MANIFEST",
+    "comment": "Generate Manifest",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "AllowIsolation",
+    "switch": "ALLOWISOLATION:NO",
+    "comment": "Allow Isolation",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "AllowIsolation",
+    "switch": "",
+    "comment": "Allow Isolation",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "EnableUAC",
+    "switch": "MANIFESTUAC:NO",
+    "comment": "Enable User Account Control (UAC)",
+    "value": "false",
+    "flags": [
+      "UserValue",
+      "UserIgnored",
+      "Continue"
+    ]
+  },
+  {
+    "name": "EnableUAC",
+    "switch": "MANIFESTUAC:",
+    "comment": "Enable User Account Control (UAC)",
+    "value": "true",
+    "flags": [
+      "UserValue",
+      "UserIgnored",
+      "Continue"
+    ]
+  },
+  {
+    "name": "UACUIAccess",
+    "switch": "uiAccess='false'",
+    "comment": "UAC Bypass UI Protection",
+    "value": "false",
+    "flags": [
+      "UserValue",
+      "UserRequired"
+    ]
+  },
+  {
+    "name": "UACUIAccess",
+    "switch": "MANIFESTUAC:",
+    "comment": "UAC Bypass UI Protection",
+    "value": "true",
+    "flags": [
+      "UserValue",
+      "UserRequired"
+    ]
+  },
+  {
+    "name": "UACUIAccess",
+    "switch": "uiAccess='false'",
+    "comment": "UAC Bypass UI Protection",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "UACUIAccess",
+    "switch": "uiAccess='true'",
+    "comment": "UAC Bypass UI Protection",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "ManifestEmbed",
+    "switch": "manifest:embed",
+    "comment": "Embed Manifest",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "GenerateDebugInformation",
+    "switch": "DEBUG",
+    "comment": "Generate Debug Info",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "GenerateMapFile",
+    "switch": "MAP",
+    "comment": "Generate Map File",
+    "value": "true",
+    "flags": [
+      "UserValue",
+      "UserIgnored",
+      "Continue"
+    ]
+  },
+  {
+    "name": "MapExports",
+    "switch": "MAPINFO:EXPORTS",
+    "comment": "Map Exports",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "AssemblyDebug",
+    "switch": "ASSEMBLYDEBUG:DISABLE",
+    "comment": "Debuggable Assembly",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "AssemblyDebug",
+    "switch": "ASSEMBLYDEBUG",
+    "comment": "Debuggable Assembly",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "LargeAddressAware",
+    "switch": "LARGEADDRESSAWARE:NO",
+    "comment": "Enable Large Addresses",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "LargeAddressAware",
+    "switch": "LARGEADDRESSAWARE",
+    "comment": "Enable Large Addresses",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "TerminalServerAware",
+    "switch": "TSAWARE:NO",
+    "comment": "Terminal Server",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "TerminalServerAware",
+    "switch": "TSAWARE",
+    "comment": "Terminal Server",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "SwapRunFromCD",
+    "switch": "SWAPRUN:CD",
+    "comment": "Swap Run From CD",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "SwapRunFromNET",
+    "switch": "SWAPRUN:NET",
+    "comment": "Swap Run From Network",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "OptimizeReferences",
+    "switch": "OPT:NOREF",
+    "comment": "References",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "OptimizeReferences",
+    "switch": "OPT:REF",
+    "comment": "References",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "EnableCOMDATFolding",
+    "switch": "OPT:NOICF",
+    "comment": "Enable COMDAT Folding",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "EnableCOMDATFolding",
+    "switch": "OPT:ICF",
+    "comment": "Enable COMDAT Folding",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "IgnoreEmbeddedIDL",
+    "switch": "IGNOREIDL",
+    "comment": "Ignore Embedded IDL",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "AppContainer",
+    "switch": "APPCONTAINER",
+    "comment": "",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "WindowsMetadataLinkDelaySign",
+    "switch": "WINMDDELAYSIGN:NO",
+    "comment": "Windows Metadata Delay Sign",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "WindowsMetadataLinkDelaySign",
+    "switch": "WINMDDELAYSIGN",
+    "comment": "Windows Metadata Delay Sign",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "NoEntryPoint",
+    "switch": "NOENTRY",
+    "comment": "No Entry Point",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "SetChecksum",
+    "switch": "RELEASE",
+    "comment": "Set Checksum",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "RandomizedBaseAddress",
+    "switch": "DYNAMICBASE:NO",
+    "comment": "Randomized Base Address",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "RandomizedBaseAddress",
+    "switch": "DYNAMICBASE",
+    "comment": "Randomized Base Address",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "FixedBaseAddress",
+    "switch": "FIXED:NO",
+    "comment": "Fixed Base Address",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "FixedBaseAddress",
+    "switch": "FIXED",
+    "comment": "Fixed Base Address",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "DataExecutionPrevention",
+    "switch": "NXCOMPAT:NO",
+    "comment": "Data Execution Prevention (DEP)",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "DataExecutionPrevention",
+    "switch": "NXCOMPAT",
+    "comment": "Data Execution Prevention (DEP)",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "TurnOffAssemblyGeneration",
+    "switch": "NOASSEMBLY",
+    "comment": "Turn Off Assembly Generation",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "SupportUnloadOfDelayLoadedDLL",
+    "switch": "DELAY:UNLOAD",
+    "comment": "Unload delay loaded DLL",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "SupportNobindOfDelayLoadedDLL",
+    "switch": "DELAY:NOBIND",
+    "comment": "Nobind delay loaded DLL",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "Profile",
+    "switch": "PROFILE",
+    "comment": "Profile",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "LinkDelaySign",
+    "switch": "DELAYSIGN:NO",
+    "comment": "Delay Sign",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "LinkDelaySign",
+    "switch": "DELAYSIGN",
+    "comment": "Delay Sign",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "CLRUnmanagedCodeCheck",
+    "switch": "CLRUNMANAGEDCODECHECK:NO",
+    "comment": "CLR Unmanaged Code Check",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "CLRUnmanagedCodeCheck",
+    "switch": "CLRUNMANAGEDCODECHECK",
+    "comment": "CLR Unmanaged Code Check",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "DetectOneDefinitionRule",
+    "switch": "ODR",
+    "comment": "Detect One Definition Rule violations",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "ImageHasSafeExceptionHandlers",
+    "switch": "SAFESEH:NO",
+    "comment": "Image Has Safe Exception Handlers",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "ImageHasSafeExceptionHandlers",
+    "switch": "SAFESEH",
+    "comment": "Image Has Safe Exception Handlers",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "LinkDLL",
+    "switch": "DLL",
+    "comment": "",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "AdditionalLibraryDirectories",
+    "switch": "LIBPATH:",
+    "comment": "Additional Library Directories",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "IgnoreSpecificDefaultLibraries",
+    "switch": "NODEFAULTLIB:",
+    "comment": "Ignore Specific Default Libraries",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "AddModuleNamesToAssembly",
+    "switch": "ASSEMBLYMODULE:",
+    "comment": "Add Module to Assembly",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "EmbedManagedResourceFile",
+    "switch": "ASSEMBLYRESOURCE:",
+    "comment": "Embed Managed Resource File",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "ForceSymbolReferences",
+    "switch": "INCLUDE:",
+    "comment": "Force Symbol References",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "DelayLoadDLLs",
+    "switch": "DELAYLOAD:",
+    "comment": "Delay Loaded Dlls",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "AssemblyLinkResource",
+    "switch": "ASSEMBLYLINKRESOURCE:",
+    "comment": "Assembly Link Resource",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "AdditionalManifestDependencies",
+    "switch": "MANIFESTDEPENDENCY:",
+    "comment": "Additional Manifest Dependencies",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "ManifestInput",
+    "switch": "manifestinput:",
+    "comment": "Manifest Input",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "OutputFile",
+    "switch": "OUT:",
+    "comment": "Output File",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "Version",
+    "switch": "VERSION:",
+    "comment": "Version",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "SpecifySectionAttributes",
+    "switch": "SECTION:",
+    "comment": "Specify Section Attributes",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "MSDOSStubFileName",
+    "switch": "STUB:",
+    "comment": "MS-DOS Stub File Name",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "ModuleDefinitionFile",
+    "switch": "DEF:",
+    "comment": "Module Definition File",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "ManifestFile",
+    "switch": "ManifestFile:",
+    "comment": "Manifest File",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "ProgramDatabaseFile",
+    "switch": "PDB:",
+    "comment": "Generate Program Database File",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "StripPrivateSymbols",
+    "switch": "PDBSTRIPPED:",
+    "comment": "Strip Private Symbols",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "MapFileName",
+    "switch": "MAP:",
+    "comment": "Map File Name",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "UserRequired"
+    ]
+  },
+  {
+    "name": "HeapReserveSize",
+    "switch": "HEAP:",
+    "comment": "Heap Reserve Size",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "HeapCommitSize",
+    "switch": "HEAP",
+    "comment": "Heap Commit Size",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "UserRequired"
+    ]
+  },
+  {
+    "name": "StackReserveSize",
+    "switch": "STACK:",
+    "comment": "Stack Reserve Size",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "StackCommitSize",
+    "switch": "STACK",
+    "comment": "Stack Commit Size",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "UserRequired"
+    ]
+  },
+  {
+    "name": "FunctionOrder",
+    "switch": "ORDER:@",
+    "comment": "Function Order",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "ProfileGuidedDatabase",
+    "switch": "PGD:",
+    "comment": "Profile Guided Database",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "MidlCommandFile",
+    "switch": "MIDL:@",
+    "comment": "MIDL Commands",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "MergedIDLBaseFileName",
+    "switch": "IDLOUT:",
+    "comment": "Merged IDL Base File Name",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "TypeLibraryFile",
+    "switch": "TLBOUT:",
+    "comment": "Type Library",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "WindowsMetadataFile",
+    "switch": "WINMDFILE:",
+    "comment": "Windows Metadata File",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "WindowsMetadataLinkKeyFile",
+    "switch": "WINMDKEYFILE:",
+    "comment": "Windows Metadata Key File",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "WindowsMetadataKeyContainer",
+    "switch": "WINMDKEYCONTAINER:",
+    "comment": "Windows Metadata Key Container",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "EntryPointSymbol",
+    "switch": "ENTRY:",
+    "comment": "Entry Point",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "BaseAddress",
+    "switch": "BASE:",
+    "comment": "Base Address",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "ImportLibrary",
+    "switch": "IMPLIB:",
+    "comment": "Import Library",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "MergeSections",
+    "switch": "MERGE:",
+    "comment": "Merge Sections",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "LinkKeyFile",
+    "switch": "KEYFILE:",
+    "comment": "Key File",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "KeyContainer",
+    "switch": "KEYCONTAINER:",
+    "comment": "Key Container",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "TypeLibraryResourceID",
+    "switch": "TLBID:",
+    "comment": "TypeLib Resource ID",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "SectionAlignment",
+    "switch": "ALIGN:",
+    "comment": "SectionAlignment",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  }
+]

+ 295 - 0
Templates/MSBuild/FlagTables/v12_MASM.json

@@ -0,0 +1,295 @@
+[
+  {
+    "name": "PreserveIdentifierCase",
+    "switch": "",
+    "comment": "Default",
+    "value": "0",
+    "flags": []
+  },
+  {
+    "name": "PreserveIdentifierCase",
+    "switch": "Cp",
+    "comment": "Preserves Identifier Case (/Cp)",
+    "value": "1",
+    "flags": []
+  },
+  {
+    "name": "PreserveIdentifierCase",
+    "switch": "Cu",
+    "comment": "Maps all identifiers to upper case. (/Cu)",
+    "value": "2",
+    "flags": []
+  },
+  {
+    "name": "PreserveIdentifierCase",
+    "switch": "Cx",
+    "comment": "Preserves case in public and extern symbols. (/Cx)",
+    "value": "3",
+    "flags": []
+  },
+  {
+    "name": "WarningLevel",
+    "switch": "W0",
+    "comment": "Warning Level 0 (/W0)",
+    "value": "0",
+    "flags": []
+  },
+  {
+    "name": "WarningLevel",
+    "switch": "W1",
+    "comment": "Warning Level 1 (/W1)",
+    "value": "1",
+    "flags": []
+  },
+  {
+    "name": "WarningLevel",
+    "switch": "W2",
+    "comment": "Warning Level 2 (/W2)",
+    "value": "2",
+    "flags": []
+  },
+  {
+    "name": "WarningLevel",
+    "switch": "W3",
+    "comment": "Warning Level 3 (/W3)",
+    "value": "3",
+    "flags": []
+  },
+  {
+    "name": "PackAlignmentBoundary",
+    "switch": "",
+    "comment": "Default",
+    "value": "0",
+    "flags": []
+  },
+  {
+    "name": "PackAlignmentBoundary",
+    "switch": "Zp1",
+    "comment": "One Byte Boundary (/Zp1)",
+    "value": "1",
+    "flags": []
+  },
+  {
+    "name": "PackAlignmentBoundary",
+    "switch": "Zp2",
+    "comment": "Two Byte Boundary (/Zp2)",
+    "value": "2",
+    "flags": []
+  },
+  {
+    "name": "PackAlignmentBoundary",
+    "switch": "Zp4",
+    "comment": "Four Byte Boundary (/Zp4)",
+    "value": "3",
+    "flags": []
+  },
+  {
+    "name": "PackAlignmentBoundary",
+    "switch": "Zp8",
+    "comment": "Eight Byte Boundary (/Zp8)",
+    "value": "4",
+    "flags": []
+  },
+  {
+    "name": "PackAlignmentBoundary",
+    "switch": "Zp16",
+    "comment": "Sixteen Byte Boundary (/Zp16)",
+    "value": "5",
+    "flags": []
+  },
+  {
+    "name": "CallingConvention",
+    "switch": "",
+    "comment": "Default",
+    "value": "0",
+    "flags": []
+  },
+  {
+    "name": "CallingConvention",
+    "switch": "Gd",
+    "comment": "Use C-style Calling Convention (/Gd)",
+    "value": "1",
+    "flags": []
+  },
+  {
+    "name": "CallingConvention",
+    "switch": "Gz",
+    "comment": "Use stdcall Calling Convention (/Gz)",
+    "value": "2",
+    "flags": []
+  },
+  {
+    "name": "CallingConvention",
+    "switch": "Gc",
+    "comment": "Use Pascal Calling Convention (/Gc)",
+    "value": "3",
+    "flags": []
+  },
+  {
+    "name": "ErrorReporting",
+    "switch": "errorReport:prompt",
+    "comment": "Prompt to send report immediately (/errorReport:prompt)",
+    "value": "0",
+    "flags": []
+  },
+  {
+    "name": "ErrorReporting",
+    "switch": "errorReport:queue",
+    "comment": "Prompt to send report at the next logon (/errorReport:queue)",
+    "value": "1",
+    "flags": []
+  },
+  {
+    "name": "ErrorReporting",
+    "switch": "errorReport:send",
+    "comment": "Automatically send report (/errorReport:send)",
+    "value": "2",
+    "flags": []
+  },
+  {
+    "name": "ErrorReporting",
+    "switch": "errorReport:none",
+    "comment": "Do not send report (/errorReport:none)",
+    "value": "3",
+    "flags": []
+  },
+  {
+    "name": "NoLogo",
+    "switch": "nologo",
+    "comment": "Suppress Startup Banner",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "GeneratePreprocessedSourceListing",
+    "switch": "EP",
+    "comment": "Generate Preprocessed Source Listing",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "ListAllAvailableInformation",
+    "switch": "Sa",
+    "comment": "List All Available Information",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "UseSafeExceptionHandlers",
+    "switch": "safeseh",
+    "comment": "Use Safe Exception Handlers",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "AddFirstPassListing",
+    "switch": "Sf",
+    "comment": "Add First Pass Listing",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "EnableAssemblyGeneratedCodeListing",
+    "switch": "Sg",
+    "comment": "Enable Assembly Generated Code Listing",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "DisableSymbolTable",
+    "switch": "Sn",
+    "comment": "Disable Symbol Table",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "EnableFalseConditionalsInListing",
+    "switch": "Sx",
+    "comment": "Enable False Conditionals In Listing",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "TreatWarningsAsErrors",
+    "switch": "WX",
+    "comment": "Treat Warnings As Errors",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "MakeAllSymbolsPublic",
+    "switch": "Zf",
+    "comment": "Make All Symbols Public",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "GenerateDebugInformation",
+    "switch": "Zi",
+    "comment": "Generate Debug Information",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "EnableMASM51Compatibility",
+    "switch": "Zm",
+    "comment": "Enable MASM 5.1 Compatibility",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "PerformSyntaxCheckOnly",
+    "switch": "Zs",
+    "comment": "Perform Syntax Check Only",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "PreprocessorDefinitions",
+    "switch": "D\"[value]\"",
+    "comment": "Preprocessor Definitions",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "IncludePaths",
+    "switch": "I \"[value]\"",
+    "comment": "Include Paths",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "BrowseFile",
+    "switch": "FR\"[value]\"",
+    "comment": "Generate Browse Information File",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "ObjectFileName",
+    "switch": "Fo\"[value]\"",
+    "comment": "Object File Name",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "AssembledCodeListingFile",
+    "switch": "Fl\"[value]\"",
+    "comment": "Assembled Code Listing File",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  }
+]

+ 69 - 0
Templates/MSBuild/FlagTables/v12_RC.json

@@ -0,0 +1,69 @@
+[
+  {
+    "name": "IgnoreStandardIncludePath",
+    "switch": "X",
+    "comment": "Ignore Standard Include Paths",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "ShowProgress",
+    "switch": "v",
+    "comment": "Show Progress",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "SuppressStartupBanner",
+    "switch": "nologo",
+    "comment": "Suppress Startup Banner",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "NullTerminateStrings",
+    "switch": "n",
+    "comment": "Null Terminate Strings",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "PreprocessorDefinitions",
+    "switch": "D",
+    "comment": "Preprocessor Definitions",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "UndefinePreprocessorDefinitions",
+    "switch": "u",
+    "comment": "Undefine Preprocessor Definitions",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "AdditionalIncludeDirectories",
+    "switch": "I",
+    "comment": "Additional Include Directories",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "ResourceOutputFileName",
+    "switch": "fo",
+    "comment": "Resource File Name",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  }
+]

+ 1124 - 0
Templates/MSBuild/FlagTables/v140_CL.json

@@ -0,0 +1,1124 @@
+[
+  {
+    "name": "DebugInformationFormat",
+    "switch": "",
+    "comment": "None",
+    "value": "None",
+    "flags": []
+  },
+  {
+    "name": "DebugInformationFormat",
+    "switch": "Z7",
+    "comment": "C7 compatible",
+    "value": "OldStyle",
+    "flags": []
+  },
+  {
+    "name": "DebugInformationFormat",
+    "switch": "Zi",
+    "comment": "Program Database",
+    "value": "ProgramDatabase",
+    "flags": []
+  },
+  {
+    "name": "DebugInformationFormat",
+    "switch": "ZI",
+    "comment": "Program Database for Edit And Continue",
+    "value": "EditAndContinue",
+    "flags": []
+  },
+  {
+    "name": "CompileAsManaged",
+    "switch": "",
+    "comment": "No Common Language RunTime Support",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "CompileAsManaged",
+    "switch": "clr",
+    "comment": "Common Language RunTime Support",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "CompileAsManaged",
+    "switch": "clr:pure",
+    "comment": "Pure MSIL Common Language RunTime Support",
+    "value": "Pure",
+    "flags": []
+  },
+  {
+    "name": "CompileAsManaged",
+    "switch": "clr:safe",
+    "comment": "Safe MSIL Common Language RunTime Support",
+    "value": "Safe",
+    "flags": []
+  },
+  {
+    "name": "WarningLevel",
+    "switch": "W0",
+    "comment": "Turn Off All Warnings",
+    "value": "TurnOffAllWarnings",
+    "flags": []
+  },
+  {
+    "name": "WarningLevel",
+    "switch": "W1",
+    "comment": "Level1",
+    "value": "Level1",
+    "flags": []
+  },
+  {
+    "name": "WarningLevel",
+    "switch": "W2",
+    "comment": "Level2",
+    "value": "Level2",
+    "flags": []
+  },
+  {
+    "name": "WarningLevel",
+    "switch": "W3",
+    "comment": "Level3",
+    "value": "Level3",
+    "flags": []
+  },
+  {
+    "name": "WarningLevel",
+    "switch": "W4",
+    "comment": "Level4",
+    "value": "Level4",
+    "flags": []
+  },
+  {
+    "name": "WarningLevel",
+    "switch": "Wall",
+    "comment": "EnableAllWarnings",
+    "value": "EnableAllWarnings",
+    "flags": []
+  },
+  {
+    "name": "Optimization",
+    "switch": "",
+    "comment": "Custom",
+    "value": "Custom",
+    "flags": []
+  },
+  {
+    "name": "Optimization",
+    "switch": "Od",
+    "comment": "Disabled",
+    "value": "Disabled",
+    "flags": []
+  },
+  {
+    "name": "Optimization",
+    "switch": "O1",
+    "comment": "Minimize Size",
+    "value": "MinSpace",
+    "flags": []
+  },
+  {
+    "name": "Optimization",
+    "switch": "O2",
+    "comment": "Maximize Speed",
+    "value": "MaxSpeed",
+    "flags": []
+  },
+  {
+    "name": "Optimization",
+    "switch": "Ox",
+    "comment": "Full Optimization",
+    "value": "Full",
+    "flags": []
+  },
+  {
+    "name": "InlineFunctionExpansion",
+    "switch": "",
+    "comment": "Default",
+    "value": "Default",
+    "flags": []
+  },
+  {
+    "name": "InlineFunctionExpansion",
+    "switch": "Ob0",
+    "comment": "Disabled",
+    "value": "Disabled",
+    "flags": []
+  },
+  {
+    "name": "InlineFunctionExpansion",
+    "switch": "Ob1",
+    "comment": "Only __inline",
+    "value": "OnlyExplicitInline",
+    "flags": []
+  },
+  {
+    "name": "InlineFunctionExpansion",
+    "switch": "Ob2",
+    "comment": "Any Suitable",
+    "value": "AnySuitable",
+    "flags": []
+  },
+  {
+    "name": "FavorSizeOrSpeed",
+    "switch": "Os",
+    "comment": "Favor small code",
+    "value": "Size",
+    "flags": []
+  },
+  {
+    "name": "FavorSizeOrSpeed",
+    "switch": "Ot",
+    "comment": "Favor fast code",
+    "value": "Speed",
+    "flags": []
+  },
+  {
+    "name": "FavorSizeOrSpeed",
+    "switch": "",
+    "comment": "Neither",
+    "value": "Neither",
+    "flags": []
+  },
+  {
+    "name": "ExceptionHandling",
+    "switch": "EHa",
+    "comment": "Yes with SEH Exceptions",
+    "value": "Async",
+    "flags": []
+  },
+  {
+    "name": "ExceptionHandling",
+    "switch": "EHsc",
+    "comment": "Yes",
+    "value": "Sync",
+    "flags": []
+  },
+  {
+    "name": "ExceptionHandling",
+    "switch": "EHs",
+    "comment": "Yes with Extern C functions",
+    "value": "SyncCThrow",
+    "flags": []
+  },
+  {
+    "name": "ExceptionHandling",
+    "switch": "",
+    "comment": "No",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "BasicRuntimeChecks",
+    "switch": "RTCs",
+    "comment": "Stack Frames",
+    "value": "StackFrameRuntimeCheck",
+    "flags": []
+  },
+  {
+    "name": "BasicRuntimeChecks",
+    "switch": "RTCu",
+    "comment": "Uninitialized variables",
+    "value": "UninitializedLocalUsageCheck",
+    "flags": []
+  },
+  {
+    "name": "BasicRuntimeChecks",
+    "switch": "RTC1",
+    "comment": "Both (/RTC1, equiv. to /RTCsu)",
+    "value": "EnableFastChecks",
+    "flags": []
+  },
+  {
+    "name": "BasicRuntimeChecks",
+    "switch": "",
+    "comment": "Default",
+    "value": "Default",
+    "flags": []
+  },
+  {
+    "name": "RuntimeLibrary",
+    "switch": "MT",
+    "comment": "Multi-threaded",
+    "value": "MultiThreaded",
+    "flags": []
+  },
+  {
+    "name": "RuntimeLibrary",
+    "switch": "MTd",
+    "comment": "Multi-threaded Debug",
+    "value": "MultiThreadedDebug",
+    "flags": []
+  },
+  {
+    "name": "RuntimeLibrary",
+    "switch": "MD",
+    "comment": "Multi-threaded DLL",
+    "value": "MultiThreadedDLL",
+    "flags": []
+  },
+  {
+    "name": "RuntimeLibrary",
+    "switch": "MDd",
+    "comment": "Multi-threaded Debug DLL",
+    "value": "MultiThreadedDebugDLL",
+    "flags": []
+  },
+  {
+    "name": "StructMemberAlignment",
+    "switch": "Zp1",
+    "comment": "1 Byte",
+    "value": "1Byte",
+    "flags": []
+  },
+  {
+    "name": "StructMemberAlignment",
+    "switch": "Zp2",
+    "comment": "2 Bytes",
+    "value": "2Bytes",
+    "flags": []
+  },
+  {
+    "name": "StructMemberAlignment",
+    "switch": "Zp4",
+    "comment": "4 Byte",
+    "value": "4Bytes",
+    "flags": []
+  },
+  {
+    "name": "StructMemberAlignment",
+    "switch": "Zp8",
+    "comment": "8 Bytes",
+    "value": "8Bytes",
+    "flags": []
+  },
+  {
+    "name": "StructMemberAlignment",
+    "switch": "Zp16",
+    "comment": "16 Bytes",
+    "value": "16Bytes",
+    "flags": []
+  },
+  {
+    "name": "StructMemberAlignment",
+    "switch": "",
+    "comment": "Default",
+    "value": "Default",
+    "flags": []
+  },
+  {
+    "name": "BufferSecurityCheck",
+    "switch": "GS-",
+    "comment": "Disable Security Check",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "BufferSecurityCheck",
+    "switch": "GS",
+    "comment": "Enable Security Check",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "ControlFlowGuard",
+    "switch": "guard:cf",
+    "comment": "Yes",
+    "value": "Guard",
+    "flags": []
+  },
+  {
+    "name": "ControlFlowGuard",
+    "switch": "",
+    "comment": "No",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "EnableEnhancedInstructionSet",
+    "switch": "arch:SSE",
+    "comment": "Streaming SIMD Extensions",
+    "value": "StreamingSIMDExtensions",
+    "flags": []
+  },
+  {
+    "name": "EnableEnhancedInstructionSet",
+    "switch": "arch:SSE2",
+    "comment": "Streaming SIMD Extensions 2",
+    "value": "StreamingSIMDExtensions2",
+    "flags": []
+  },
+  {
+    "name": "EnableEnhancedInstructionSet",
+    "switch": "arch:AVX",
+    "comment": "Advanced Vector Extensions",
+    "value": "AdvancedVectorExtensions",
+    "flags": []
+  },
+  {
+    "name": "EnableEnhancedInstructionSet",
+    "switch": "arch:AVX2",
+    "comment": "Advanced Vector Extensions 2",
+    "value": "AdvancedVectorExtensions2",
+    "flags": []
+  },
+  {
+    "name": "EnableEnhancedInstructionSet",
+    "switch": "arch:IA32",
+    "comment": "No Enhanced Instructions",
+    "value": "NoExtensions",
+    "flags": []
+  },
+  {
+    "name": "EnableEnhancedInstructionSet",
+    "switch": "",
+    "comment": "Not Set",
+    "value": "NotSet",
+    "flags": []
+  },
+  {
+    "name": "FloatingPointModel",
+    "switch": "fp:precise",
+    "comment": "Precise",
+    "value": "Precise",
+    "flags": []
+  },
+  {
+    "name": "FloatingPointModel",
+    "switch": "fp:strict",
+    "comment": "Strict",
+    "value": "Strict",
+    "flags": []
+  },
+  {
+    "name": "FloatingPointModel",
+    "switch": "fp:fast",
+    "comment": "Fast",
+    "value": "Fast",
+    "flags": []
+  },
+  {
+    "name": "PrecompiledHeader",
+    "switch": "Yc",
+    "comment": "Create",
+    "value": "Create",
+    "flags": [
+      "UserValue",
+      "UserIgnored",
+      "Continue"
+    ]
+  },
+  {
+    "name": "PrecompiledHeader",
+    "switch": "Yu",
+    "comment": "Use",
+    "value": "Use",
+    "flags": [
+      "UserValue",
+      "UserIgnored",
+      "Continue"
+    ]
+  },
+  {
+    "name": "PrecompiledHeader",
+    "switch": "",
+    "comment": "Not Using Precompiled Headers",
+    "value": "NotUsing",
+    "flags": []
+  },
+  {
+    "name": "AssemblerOutput",
+    "switch": "",
+    "comment": "No Listing",
+    "value": "NoListing",
+    "flags": []
+  },
+  {
+    "name": "AssemblerOutput",
+    "switch": "FA",
+    "comment": "Assembly-Only Listing",
+    "value": "AssemblyCode",
+    "flags": []
+  },
+  {
+    "name": "AssemblerOutput",
+    "switch": "FAc",
+    "comment": "Assembly With Machine Code",
+    "value": "AssemblyAndMachineCode",
+    "flags": []
+  },
+  {
+    "name": "AssemblerOutput",
+    "switch": "FAs",
+    "comment": "Assembly With Source Code",
+    "value": "AssemblyAndSourceCode",
+    "flags": []
+  },
+  {
+    "name": "AssemblerOutput",
+    "switch": "FAcs",
+    "comment": "Assembly, Machine Code and Source",
+    "value": "All",
+    "flags": []
+  },
+  {
+    "name": "CallingConvention",
+    "switch": "Gd",
+    "comment": "__cdecl",
+    "value": "Cdecl",
+    "flags": []
+  },
+  {
+    "name": "CallingConvention",
+    "switch": "Gr",
+    "comment": "__fastcall",
+    "value": "FastCall",
+    "flags": []
+  },
+  {
+    "name": "CallingConvention",
+    "switch": "Gz",
+    "comment": "__stdcall",
+    "value": "StdCall",
+    "flags": []
+  },
+  {
+    "name": "CallingConvention",
+    "switch": "Gv",
+    "comment": "__vectorcall",
+    "value": "VectorCall",
+    "flags": []
+  },
+  {
+    "name": "CompileAs",
+    "switch": "",
+    "comment": "Default",
+    "value": "Default",
+    "flags": []
+  },
+  {
+    "name": "CompileAs",
+    "switch": "TC",
+    "comment": "Compile as C Code",
+    "value": "CompileAsC",
+    "flags": []
+  },
+  {
+    "name": "CompileAs",
+    "switch": "TP",
+    "comment": "Compile as C++ Code",
+    "value": "CompileAsCpp",
+    "flags": []
+  },
+  {
+    "name": "ErrorReporting",
+    "switch": "errorReport:none",
+    "comment": "Do Not Send Report",
+    "value": "None",
+    "flags": []
+  },
+  {
+    "name": "ErrorReporting",
+    "switch": "errorReport:prompt",
+    "comment": "Prompt Immediately",
+    "value": "Prompt",
+    "flags": []
+  },
+  {
+    "name": "ErrorReporting",
+    "switch": "errorReport:queue",
+    "comment": "Queue For Next Login",
+    "value": "Queue",
+    "flags": []
+  },
+  {
+    "name": "ErrorReporting",
+    "switch": "errorReport:send",
+    "comment": "Send Automatically",
+    "value": "Send",
+    "flags": []
+  },
+  {
+    "name": "CompileAsWinRT",
+    "switch": "ZW",
+    "comment": "Consume Windows Runtime Extension",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "WinRTNoStdLib",
+    "switch": "ZW:nostdlib",
+    "comment": "No Standard WinRT Libraries",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "SuppressStartupBanner",
+    "switch": "nologo",
+    "comment": "Suppress Startup Banner",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "TreatWarningAsError",
+    "switch": "WX-",
+    "comment": "Treat Warnings As Errors",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "TreatWarningAsError",
+    "switch": "WX",
+    "comment": "Treat Warnings As Errors",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "SDLCheck",
+    "switch": "sdl-",
+    "comment": "SDL checks",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "SDLCheck",
+    "switch": "sdl",
+    "comment": "SDL checks",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "MultiProcessorCompilation",
+    "switch": "MP",
+    "comment": "Multi-processor Compilation",
+    "value": "true",
+    "flags": [
+      "UserValue",
+      "UserIgnored",
+      "Continue"
+    ]
+  },
+  {
+    "name": "IntrinsicFunctions",
+    "switch": "Oi",
+    "comment": "Enable Intrinsic Functions",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "OmitFramePointers",
+    "switch": "Oy-",
+    "comment": "Omit Frame Pointers",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "OmitFramePointers",
+    "switch": "Oy",
+    "comment": "Omit Frame Pointers",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "EnableFiberSafeOptimizations",
+    "switch": "GT",
+    "comment": "Enable Fiber-Safe Optimizations",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "WholeProgramOptimization",
+    "switch": "GL",
+    "comment": "Whole Program Optimization",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "UndefineAllPreprocessorDefinitions",
+    "switch": "u",
+    "comment": "Undefine All Preprocessor Definitions",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "IgnoreStandardIncludePath",
+    "switch": "X",
+    "comment": "Ignore Standard Include Paths",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "PreprocessToFile",
+    "switch": "P",
+    "comment": "Preprocess to a File",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "PreprocessSuppressLineNumbers",
+    "switch": "EP",
+    "comment": "Preprocess Suppress Line Numbers",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "PreprocessKeepComments",
+    "switch": "C",
+    "comment": "Keep Comments",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "StringPooling",
+    "switch": "GF-",
+    "comment": "Enable String Pooling",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "StringPooling",
+    "switch": "GF",
+    "comment": "Enable String Pooling",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "MinimalRebuild",
+    "switch": "Gm-",
+    "comment": "Enable Minimal Rebuild",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "MinimalRebuild",
+    "switch": "Gm",
+    "comment": "Enable Minimal Rebuild",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "SmallerTypeCheck",
+    "switch": "RTCc",
+    "comment": "Smaller Type Check",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "FunctionLevelLinking",
+    "switch": "Gy-",
+    "comment": "Enable Function-Level Linking",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "FunctionLevelLinking",
+    "switch": "Gy",
+    "comment": "Enable Function-Level Linking",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "EnableParallelCodeGeneration",
+    "switch": "Qpar-",
+    "comment": "Enable Parallel Code Generation",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "EnableParallelCodeGeneration",
+    "switch": "Qpar",
+    "comment": "Enable Parallel Code Generation",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "FloatingPointExceptions",
+    "switch": "fp:except-",
+    "comment": "Enable Floating Point Exceptions",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "FloatingPointExceptions",
+    "switch": "fp:except",
+    "comment": "Enable Floating Point Exceptions",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "CreateHotpatchableImage",
+    "switch": "hotpatch",
+    "comment": "Create Hotpatchable Image",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "DisableLanguageExtensions",
+    "switch": "Za",
+    "comment": "Disable Language Extensions",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "TreatWChar_tAsBuiltInType",
+    "switch": "Zc:wchar_t-",
+    "comment": "Treat WChar_t As Built in Type",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "TreatWChar_tAsBuiltInType",
+    "switch": "Zc:wchar_t",
+    "comment": "Treat WChar_t As Built in Type",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "ForceConformanceInForLoopScope",
+    "switch": "Zc:forScope-",
+    "comment": "Force Conformance in For Loop Scope",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "ForceConformanceInForLoopScope",
+    "switch": "Zc:forScope",
+    "comment": "Force Conformance in For Loop Scope",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "RemoveUnreferencedCodeData",
+    "switch": "Zc:inline",
+    "comment": "Remove unreferenced code and data",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "EnforceTypeConversionRules",
+    "switch": "Zc:rvalueCast-",
+    "comment": "Enforce type conversion rules",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "EnforceTypeConversionRules",
+    "switch": "Zc:rvalueCast",
+    "comment": "Enforce type conversion rules",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "RuntimeTypeInfo",
+    "switch": "GR-",
+    "comment": "Enable Run-Time Type Information",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "RuntimeTypeInfo",
+    "switch": "GR",
+    "comment": "Enable Run-Time Type Information",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "OpenMPSupport",
+    "switch": "openmp-",
+    "comment": "Open MP Support",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "OpenMPSupport",
+    "switch": "openmp",
+    "comment": "Open MP Support",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "ExpandAttributedSource",
+    "switch": "Fx",
+    "comment": "Expand Attributed Source",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "UseUnicodeForAssemblerListing",
+    "switch": "FAu",
+    "comment": "Use Unicode For Assembler Listing",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "GenerateXMLDocumentationFiles",
+    "switch": "doc",
+    "comment": "Generate XML Documentation Files",
+    "value": "true",
+    "flags": [
+      "UserValue",
+      "UserIgnored",
+      "Continue"
+    ]
+  },
+  {
+    "name": "BrowseInformation",
+    "switch": "FR",
+    "comment": "Enable Browse Information",
+    "value": "true",
+    "flags": [
+      "UserValue",
+      "UserIgnored",
+      "Continue"
+    ]
+  },
+  {
+    "name": "ShowIncludes",
+    "switch": "showIncludes",
+    "comment": "Show Includes",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "EnablePREfast",
+    "switch": "analyze-",
+    "comment": "Enable Code Analysis",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "EnablePREfast",
+    "switch": "analyze",
+    "comment": "Enable Code Analysis",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "UseFullPaths",
+    "switch": "FC",
+    "comment": "Use Full Paths",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "OmitDefaultLibName",
+    "switch": "Zl",
+    "comment": "Omit Default Library Name",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "AdditionalIncludeDirectories",
+    "switch": "I",
+    "comment": "Additional Include Directories",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "AdditionalUsingDirectories",
+    "switch": "AI",
+    "comment": "Additional #using Directories",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "PreprocessorDefinitions",
+    "switch": "D",
+    "comment": "Preprocessor Definitions",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "UndefinePreprocessorDefinitions",
+    "switch": "U",
+    "comment": "Undefine Preprocessor Definitions",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "DisableSpecificWarnings",
+    "switch": "wd",
+    "comment": "Disable Specific Warnings",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "ForcedIncludeFiles",
+    "switch": "FI",
+    "comment": "Forced Include File",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "ForcedUsingFiles",
+    "switch": "FU",
+    "comment": "Forced #using File",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "PREfastAdditionalOptions",
+    "switch": "analyze:",
+    "comment": "Additional Code Analysis Native options",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "PREfastAdditionalPlugins",
+    "switch": "analyze:plugin",
+    "comment": "Additional Code Analysis Native plugins",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "TreatSpecificWarningsAsErrors",
+    "switch": "we",
+    "comment": "Treat Specific Warnings As Errors",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "WarningVersion",
+    "switch": "Wv:",
+    "comment": "Warning Version",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "PreprocessOutputPath",
+    "switch": "Fi",
+    "comment": "Preprocess Output Path",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "PrecompiledHeaderFile",
+    "switch": "Yu",
+    "comment": "Precompiled Header File",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "UserRequired"
+    ]
+  },
+  {
+    "name": "PrecompiledHeaderFile",
+    "switch": "Yc",
+    "comment": "Precompiled Header File",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "UserRequired"
+    ]
+  },
+  {
+    "name": "PrecompiledHeaderOutputFile",
+    "switch": "Fp",
+    "comment": "Precompiled Header Output File",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "AssemblerListingLocation",
+    "switch": "Fa",
+    "comment": "ASM List Location",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "ObjectFileName",
+    "switch": "Fo",
+    "comment": "Object File Name",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "ProgramDataBaseFileName",
+    "switch": "Fd",
+    "comment": "Program Database File Name",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "XMLDocumentationFileName",
+    "switch": "doc",
+    "comment": "XML Documentation File Name",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "UserRequired"
+    ]
+  },
+  {
+    "name": "BrowseInformationFile",
+    "switch": "FR",
+    "comment": "Browse Information File",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "UserRequired"
+    ]
+  },
+  {
+    "name": "PREfastLog",
+    "switch": "analyze:log",
+    "comment": "Code Analysis Log",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "ProcessorNumber",
+    "switch": "MP",
+    "comment": "Number of processors",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "UserRequired"
+    ]
+  }
+]

+ 1329 - 0
Templates/MSBuild/FlagTables/v140_Link.json

@@ -0,0 +1,1329 @@
+[
+  {
+    "name": "ShowProgress",
+    "switch": "",
+    "comment": "Not Set",
+    "value": "NotSet",
+    "flags": []
+  },
+  {
+    "name": "ShowProgress",
+    "switch": "VERBOSE",
+    "comment": "Display all progress messages",
+    "value": "LinkVerbose",
+    "flags": []
+  },
+  {
+    "name": "ShowProgress",
+    "switch": "VERBOSE:Lib",
+    "comment": "For Libraries Searched",
+    "value": "LinkVerboseLib",
+    "flags": []
+  },
+  {
+    "name": "ShowProgress",
+    "switch": "VERBOSE:ICF",
+    "comment": "About COMDAT folding during optimized linking",
+    "value": "LinkVerboseICF",
+    "flags": []
+  },
+  {
+    "name": "ShowProgress",
+    "switch": "VERBOSE:REF",
+    "comment": "About data removed during optimized linking",
+    "value": "LinkVerboseREF",
+    "flags": []
+  },
+  {
+    "name": "ShowProgress",
+    "switch": "VERBOSE:SAFESEH",
+    "comment": "About Modules incompatible with SEH",
+    "value": "LinkVerboseSAFESEH",
+    "flags": []
+  },
+  {
+    "name": "ShowProgress",
+    "switch": "VERBOSE:CLR",
+    "comment": "About linker activity related to managed code",
+    "value": "LinkVerboseCLR",
+    "flags": []
+  },
+  {
+    "name": "ForceFileOutput",
+    "switch": "FORCE",
+    "comment": "Enabled",
+    "value": "Enabled",
+    "flags": []
+  },
+  {
+    "name": "ForceFileOutput",
+    "switch": "FORCE:MULTIPLE",
+    "comment": "Multiply Defined Symbol Only",
+    "value": "MultiplyDefinedSymbolOnly",
+    "flags": []
+  },
+  {
+    "name": "ForceFileOutput",
+    "switch": "FORCE:UNRESOLVED",
+    "comment": "Undefined Symbol Only",
+    "value": "UndefinedSymbolOnly",
+    "flags": []
+  },
+  {
+    "name": "CreateHotPatchableImage",
+    "switch": "FUNCTIONPADMIN",
+    "comment": "Enabled",
+    "value": "Enabled",
+    "flags": []
+  },
+  {
+    "name": "CreateHotPatchableImage",
+    "switch": "FUNCTIONPADMIN:5",
+    "comment": "X86 Image Only",
+    "value": "X86Image",
+    "flags": []
+  },
+  {
+    "name": "CreateHotPatchableImage",
+    "switch": "FUNCTIONPADMIN:6",
+    "comment": "X64 Image Only",
+    "value": "X64Image",
+    "flags": []
+  },
+  {
+    "name": "CreateHotPatchableImage",
+    "switch": "FUNCTIONPADMIN:16",
+    "comment": "Itanium Image Only",
+    "value": "ItaniumImage",
+    "flags": []
+  },
+  {
+    "name": "UACExecutionLevel",
+    "switch": "level='asInvoker'",
+    "comment": "asInvoker",
+    "value": "AsInvoker",
+    "flags": []
+  },
+  {
+    "name": "UACExecutionLevel",
+    "switch": "level='highestAvailable'",
+    "comment": "highestAvailable",
+    "value": "HighestAvailable",
+    "flags": []
+  },
+  {
+    "name": "UACExecutionLevel",
+    "switch": "level='requireAdministrator'",
+    "comment": "requireAdministrator",
+    "value": "RequireAdministrator",
+    "flags": []
+  },
+  {
+    "name": "GenerateDebugInformation",
+    "switch": "",
+    "comment": "No",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "GenerateDebugInformation",
+    "switch": "DEBUG",
+    "comment": "Optimize for debugging",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "GenerateDebugInformation",
+    "switch": "DEBUG:FASTLINK",
+    "comment": "Optimize for faster linking",
+    "value": "DebugFastLink",
+    "flags": []
+  },
+  {
+    "name": "SubSystem",
+    "switch": "",
+    "comment": "Not Set",
+    "value": "NotSet",
+    "flags": []
+  },
+  {
+    "name": "SubSystem",
+    "switch": "SUBSYSTEM:CONSOLE",
+    "comment": "Console",
+    "value": "Console",
+    "flags": []
+  },
+  {
+    "name": "SubSystem",
+    "switch": "SUBSYSTEM:WINDOWS",
+    "comment": "Windows",
+    "value": "Windows",
+    "flags": []
+  },
+  {
+    "name": "SubSystem",
+    "switch": "SUBSYSTEM:NATIVE",
+    "comment": "Native",
+    "value": "Native",
+    "flags": []
+  },
+  {
+    "name": "SubSystem",
+    "switch": "SUBSYSTEM:EFI_APPLICATION",
+    "comment": "EFI Application",
+    "value": "EFI Application",
+    "flags": []
+  },
+  {
+    "name": "SubSystem",
+    "switch": "SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER",
+    "comment": "EFI Boot Service Driver",
+    "value": "EFI Boot Service Driver",
+    "flags": []
+  },
+  {
+    "name": "SubSystem",
+    "switch": "SUBSYSTEM:EFI_ROM",
+    "comment": "EFI ROM",
+    "value": "EFI ROM",
+    "flags": []
+  },
+  {
+    "name": "SubSystem",
+    "switch": "SUBSYSTEM:EFI_RUNTIME_DRIVER",
+    "comment": "EFI Runtime",
+    "value": "EFI Runtime",
+    "flags": []
+  },
+  {
+    "name": "SubSystem",
+    "switch": "SUBSYSTEM:POSIX",
+    "comment": "POSIX",
+    "value": "POSIX",
+    "flags": []
+  },
+  {
+    "name": "Driver",
+    "switch": "",
+    "comment": "Not Set",
+    "value": "NotSet",
+    "flags": []
+  },
+  {
+    "name": "Driver",
+    "switch": "Driver",
+    "comment": "Driver",
+    "value": "Driver",
+    "flags": []
+  },
+  {
+    "name": "Driver",
+    "switch": "DRIVER:UPONLY",
+    "comment": "UP Only",
+    "value": "UpOnly",
+    "flags": []
+  },
+  {
+    "name": "Driver",
+    "switch": "DRIVER:WDM",
+    "comment": "WDM",
+    "value": "WDM",
+    "flags": []
+  },
+  {
+    "name": "LinkTimeCodeGeneration",
+    "switch": "",
+    "comment": "Default",
+    "value": "Default",
+    "flags": []
+  },
+  {
+    "name": "LinkTimeCodeGeneration",
+    "switch": "LTCG:incremental",
+    "comment": "Use Fast Link Time Code Generation",
+    "value": "UseFastLinkTimeCodeGeneration",
+    "flags": []
+  },
+  {
+    "name": "LinkTimeCodeGeneration",
+    "switch": "LTCG",
+    "comment": "Use Link Time Code Generation",
+    "value": "UseLinkTimeCodeGeneration",
+    "flags": []
+  },
+  {
+    "name": "LinkTimeCodeGeneration",
+    "switch": "LTCG:PGInstrument",
+    "comment": "Profile Guided Optimization - Instrument",
+    "value": "PGInstrument",
+    "flags": []
+  },
+  {
+    "name": "LinkTimeCodeGeneration",
+    "switch": "LTCG:PGOptimize",
+    "comment": "Profile Guided Optimization - Optimization",
+    "value": "PGOptimization",
+    "flags": []
+  },
+  {
+    "name": "LinkTimeCodeGeneration",
+    "switch": "LTCG:PGUpdate",
+    "comment": "Profile Guided Optimization - Update",
+    "value": "PGUpdate",
+    "flags": []
+  },
+  {
+    "name": "GenerateWindowsMetadata",
+    "switch": "WINMD",
+    "comment": "Yes",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "GenerateWindowsMetadata",
+    "switch": "WINMD:NO",
+    "comment": "No",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "WindowsMetadataSignHash",
+    "switch": "WINMDSIGNHASH:SHA1",
+    "comment": "SHA1",
+    "value": "SHA1",
+    "flags": []
+  },
+  {
+    "name": "WindowsMetadataSignHash",
+    "switch": "WINMDSIGNHASH:SHA256",
+    "comment": "SHA256",
+    "value": "SHA256",
+    "flags": []
+  },
+  {
+    "name": "WindowsMetadataSignHash",
+    "switch": "WINMDSIGNHASH:SHA384",
+    "comment": "SHA384",
+    "value": "SHA384",
+    "flags": []
+  },
+  {
+    "name": "WindowsMetadataSignHash",
+    "switch": "WINMDSIGNHASH:SHA512",
+    "comment": "SHA512",
+    "value": "SHA512",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "",
+    "comment": "Not Set",
+    "value": "NotSet",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:ARM",
+    "comment": "MachineARM",
+    "value": "MachineARM",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:EBC",
+    "comment": "MachineEBC",
+    "value": "MachineEBC",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:IA64",
+    "comment": "MachineIA64",
+    "value": "MachineIA64",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:MIPS",
+    "comment": "MachineMIPS",
+    "value": "MachineMIPS",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:MIPS16",
+    "comment": "MachineMIPS16",
+    "value": "MachineMIPS16",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:MIPSFPU",
+    "comment": "MachineMIPSFPU",
+    "value": "MachineMIPSFPU",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:MIPSFPU16",
+    "comment": "MachineMIPSFPU16",
+    "value": "MachineMIPSFPU16",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:SH4",
+    "comment": "MachineSH4",
+    "value": "MachineSH4",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:THUMB",
+    "comment": "MachineTHUMB",
+    "value": "MachineTHUMB",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:X64",
+    "comment": "MachineX64",
+    "value": "MachineX64",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:X86",
+    "comment": "MachineX86",
+    "value": "MachineX86",
+    "flags": []
+  },
+  {
+    "name": "CLRThreadAttribute",
+    "switch": "CLRTHREADATTRIBUTE:MTA",
+    "comment": "MTA threading attribute",
+    "value": "MTAThreadingAttribute",
+    "flags": []
+  },
+  {
+    "name": "CLRThreadAttribute",
+    "switch": "CLRTHREADATTRIBUTE:STA",
+    "comment": "STA threading attribute",
+    "value": "STAThreadingAttribute",
+    "flags": []
+  },
+  {
+    "name": "CLRThreadAttribute",
+    "switch": "CLRTHREADATTRIBUTE:NONE",
+    "comment": "Default threading attribute",
+    "value": "DefaultThreadingAttribute",
+    "flags": []
+  },
+  {
+    "name": "CLRImageType",
+    "switch": "CLRIMAGETYPE:IJW",
+    "comment": "Force IJW image",
+    "value": "ForceIJWImage",
+    "flags": []
+  },
+  {
+    "name": "CLRImageType",
+    "switch": "CLRIMAGETYPE:PURE",
+    "comment": "Force Pure IL Image",
+    "value": "ForcePureILImage",
+    "flags": []
+  },
+  {
+    "name": "CLRImageType",
+    "switch": "CLRIMAGETYPE:SAFE",
+    "comment": "Force Safe IL Image",
+    "value": "ForceSafeILImage",
+    "flags": []
+  },
+  {
+    "name": "CLRImageType",
+    "switch": "",
+    "comment": "Default image type",
+    "value": "Default",
+    "flags": []
+  },
+  {
+    "name": "SignHash",
+    "switch": "CLRSIGNHASH:SHA1",
+    "comment": "SHA1",
+    "value": "SHA1",
+    "flags": []
+  },
+  {
+    "name": "SignHash",
+    "switch": "CLRSIGNHASH:SHA256",
+    "comment": "SHA256",
+    "value": "SHA256",
+    "flags": []
+  },
+  {
+    "name": "SignHash",
+    "switch": "CLRSIGNHASH:SHA384",
+    "comment": "SHA384",
+    "value": "SHA384",
+    "flags": []
+  },
+  {
+    "name": "SignHash",
+    "switch": "CLRSIGNHASH:SHA512",
+    "comment": "SHA512",
+    "value": "SHA512",
+    "flags": []
+  },
+  {
+    "name": "LinkErrorReporting",
+    "switch": "ERRORREPORT:PROMPT",
+    "comment": "PromptImmediately",
+    "value": "PromptImmediately",
+    "flags": []
+  },
+  {
+    "name": "LinkErrorReporting",
+    "switch": "ERRORREPORT:QUEUE",
+    "comment": "Queue For Next Login",
+    "value": "QueueForNextLogin",
+    "flags": []
+  },
+  {
+    "name": "LinkErrorReporting",
+    "switch": "ERRORREPORT:SEND",
+    "comment": "Send Error Report",
+    "value": "SendErrorReport",
+    "flags": []
+  },
+  {
+    "name": "LinkErrorReporting",
+    "switch": "ERRORREPORT:NONE",
+    "comment": "No Error Report",
+    "value": "NoErrorReport",
+    "flags": []
+  },
+  {
+    "name": "CLRSupportLastError",
+    "switch": "CLRSupportLastError",
+    "comment": "Enabled",
+    "value": "Enabled",
+    "flags": []
+  },
+  {
+    "name": "CLRSupportLastError",
+    "switch": "CLRSupportLastError:NO",
+    "comment": "Disabled",
+    "value": "Disabled",
+    "flags": []
+  },
+  {
+    "name": "CLRSupportLastError",
+    "switch": "CLRSupportLastError:SYSTEMDLL",
+    "comment": "System Dlls Only",
+    "value": "SystemDlls",
+    "flags": []
+  },
+  {
+    "name": "LinkControlFlowGuard",
+    "switch": "guard:cf",
+    "comment": "Enable Security Check with Guard",
+    "value": "Guard",
+    "flags": []
+  },
+  {
+    "name": "LinkIncremental",
+    "switch": "INCREMENTAL:NO",
+    "comment": "Enable Incremental Linking",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "LinkIncremental",
+    "switch": "INCREMENTAL",
+    "comment": "Enable Incremental Linking",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "SuppressStartupBanner",
+    "switch": "NOLOGO",
+    "comment": "Suppress Startup Banner",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "LinkStatus",
+    "switch": "LTCG:NOSTATUS",
+    "comment": "Link Status",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "LinkStatus",
+    "switch": "LTCG:STATUS",
+    "comment": "Link Status",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "PreventDllBinding",
+    "switch": "ALLOWBIND:NO",
+    "comment": "Prevent Dll Binding",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "PreventDllBinding",
+    "switch": "ALLOWBIND",
+    "comment": "Prevent Dll Binding",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "TreatLinkerWarningAsErrors",
+    "switch": "WX:NO",
+    "comment": "Treat Linker Warning As Errors",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "TreatLinkerWarningAsErrors",
+    "switch": "WX",
+    "comment": "Treat Linker Warning As Errors",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "IgnoreAllDefaultLibraries",
+    "switch": "NODEFAULTLIB",
+    "comment": "Ignore All Default Libraries",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "GenerateManifest",
+    "switch": "MANIFEST:NO",
+    "comment": "Generate Manifest",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "GenerateManifest",
+    "switch": "MANIFEST",
+    "comment": "Generate Manifest",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "AllowIsolation",
+    "switch": "ALLOWISOLATION:NO",
+    "comment": "Allow Isolation",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "AllowIsolation",
+    "switch": "",
+    "comment": "Allow Isolation",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "EnableUAC",
+    "switch": "MANIFESTUAC:NO",
+    "comment": "Enable User Account Control (UAC)",
+    "value": "false",
+    "flags": [
+      "UserValue",
+      "UserIgnored",
+      "Continue"
+    ]
+  },
+  {
+    "name": "EnableUAC",
+    "switch": "MANIFESTUAC:",
+    "comment": "Enable User Account Control (UAC)",
+    "value": "true",
+    "flags": [
+      "UserValue",
+      "UserIgnored",
+      "Continue"
+    ]
+  },
+  {
+    "name": "UACUIAccess",
+    "switch": "uiAccess='false'",
+    "comment": "UAC Bypass UI Protection",
+    "value": "false",
+    "flags": [
+      "UserValue",
+      "UserRequired"
+    ]
+  },
+  {
+    "name": "UACUIAccess",
+    "switch": "MANIFESTUAC:",
+    "comment": "UAC Bypass UI Protection",
+    "value": "true",
+    "flags": [
+      "UserValue",
+      "UserRequired"
+    ]
+  },
+  {
+    "name": "UACUIAccess",
+    "switch": "uiAccess='false'",
+    "comment": "UAC Bypass UI Protection",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "UACUIAccess",
+    "switch": "uiAccess='true'",
+    "comment": "UAC Bypass UI Protection",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "ManifestEmbed",
+    "switch": "manifest:embed",
+    "comment": "Embed Manifest",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "GenerateMapFile",
+    "switch": "MAP",
+    "comment": "Generate Map File",
+    "value": "true",
+    "flags": [
+      "UserValue",
+      "UserIgnored",
+      "Continue"
+    ]
+  },
+  {
+    "name": "MapExports",
+    "switch": "MAPINFO:EXPORTS",
+    "comment": "Map Exports",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "AssemblyDebug",
+    "switch": "ASSEMBLYDEBUG:DISABLE",
+    "comment": "Debuggable Assembly",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "AssemblyDebug",
+    "switch": "ASSEMBLYDEBUG",
+    "comment": "Debuggable Assembly",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "LargeAddressAware",
+    "switch": "LARGEADDRESSAWARE:NO",
+    "comment": "Enable Large Addresses",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "LargeAddressAware",
+    "switch": "LARGEADDRESSAWARE",
+    "comment": "Enable Large Addresses",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "TerminalServerAware",
+    "switch": "TSAWARE:NO",
+    "comment": "Terminal Server",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "TerminalServerAware",
+    "switch": "TSAWARE",
+    "comment": "Terminal Server",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "SwapRunFromCD",
+    "switch": "SWAPRUN:CD",
+    "comment": "Swap Run From CD",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "SwapRunFromNET",
+    "switch": "SWAPRUN:NET",
+    "comment": "Swap Run From Network",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "OptimizeReferences",
+    "switch": "OPT:NOREF",
+    "comment": "References",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "OptimizeReferences",
+    "switch": "OPT:REF",
+    "comment": "References",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "EnableCOMDATFolding",
+    "switch": "OPT:NOICF",
+    "comment": "Enable COMDAT Folding",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "EnableCOMDATFolding",
+    "switch": "OPT:ICF",
+    "comment": "Enable COMDAT Folding",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "IgnoreEmbeddedIDL",
+    "switch": "IGNOREIDL",
+    "comment": "Ignore Embedded IDL",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "AppContainer",
+    "switch": "APPCONTAINER",
+    "comment": "",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "WindowsMetadataLinkDelaySign",
+    "switch": "WINMDDELAYSIGN:NO",
+    "comment": "Windows Metadata Delay Sign",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "WindowsMetadataLinkDelaySign",
+    "switch": "WINMDDELAYSIGN",
+    "comment": "Windows Metadata Delay Sign",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "NoEntryPoint",
+    "switch": "NOENTRY",
+    "comment": "No Entry Point",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "SetChecksum",
+    "switch": "RELEASE",
+    "comment": "Set Checksum",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "RandomizedBaseAddress",
+    "switch": "DYNAMICBASE:NO",
+    "comment": "Randomized Base Address",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "RandomizedBaseAddress",
+    "switch": "DYNAMICBASE",
+    "comment": "Randomized Base Address",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "FixedBaseAddress",
+    "switch": "FIXED:NO",
+    "comment": "Fixed Base Address",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "FixedBaseAddress",
+    "switch": "FIXED",
+    "comment": "Fixed Base Address",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "DataExecutionPrevention",
+    "switch": "NXCOMPAT:NO",
+    "comment": "Data Execution Prevention (DEP)",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "DataExecutionPrevention",
+    "switch": "NXCOMPAT",
+    "comment": "Data Execution Prevention (DEP)",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "TurnOffAssemblyGeneration",
+    "switch": "NOASSEMBLY",
+    "comment": "Turn Off Assembly Generation",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "SupportUnloadOfDelayLoadedDLL",
+    "switch": "DELAY:UNLOAD",
+    "comment": "Unload delay loaded DLL",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "SupportNobindOfDelayLoadedDLL",
+    "switch": "DELAY:NOBIND",
+    "comment": "Nobind delay loaded DLL",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "Profile",
+    "switch": "PROFILE",
+    "comment": "Profile",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "LinkDelaySign",
+    "switch": "DELAYSIGN:NO",
+    "comment": "Delay Sign",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "LinkDelaySign",
+    "switch": "DELAYSIGN",
+    "comment": "Delay Sign",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "CLRUnmanagedCodeCheck",
+    "switch": "CLRUNMANAGEDCODECHECK:NO",
+    "comment": "CLR Unmanaged Code Check",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "CLRUnmanagedCodeCheck",
+    "switch": "CLRUNMANAGEDCODECHECK",
+    "comment": "CLR Unmanaged Code Check",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "DetectOneDefinitionRule",
+    "switch": "ODR",
+    "comment": "Detect One Definition Rule violations",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "ImageHasSafeExceptionHandlers",
+    "switch": "SAFESEH:NO",
+    "comment": "Image Has Safe Exception Handlers",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "ImageHasSafeExceptionHandlers",
+    "switch": "SAFESEH",
+    "comment": "Image Has Safe Exception Handlers",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "LinkDLL",
+    "switch": "DLL",
+    "comment": "",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "AdditionalLibraryDirectories",
+    "switch": "LIBPATH:",
+    "comment": "Additional Library Directories",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "Natvis",
+    "switch": "NATVIS:",
+    "comment": "Natvis files",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "IgnoreSpecificDefaultLibraries",
+    "switch": "NODEFAULTLIB:",
+    "comment": "Ignore Specific Default Libraries",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "AddModuleNamesToAssembly",
+    "switch": "ASSEMBLYMODULE:",
+    "comment": "Add Module to Assembly",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "EmbedManagedResourceFile",
+    "switch": "ASSEMBLYRESOURCE:",
+    "comment": "Embed Managed Resource File",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "ForceSymbolReferences",
+    "switch": "INCLUDE:",
+    "comment": "Force Symbol References",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "DelayLoadDLLs",
+    "switch": "DELAYLOAD:",
+    "comment": "Delay Loaded Dlls",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "AssemblyLinkResource",
+    "switch": "ASSEMBLYLINKRESOURCE:",
+    "comment": "Assembly Link Resource",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "AdditionalManifestDependencies",
+    "switch": "MANIFESTDEPENDENCY:",
+    "comment": "Additional Manifest Dependencies",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "ManifestInput",
+    "switch": "manifestinput:",
+    "comment": "Manifest Input",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "OutputFile",
+    "switch": "OUT:",
+    "comment": "Output File",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "Version",
+    "switch": "VERSION:",
+    "comment": "Version",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "SpecifySectionAttributes",
+    "switch": "SECTION:",
+    "comment": "Specify Section Attributes",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "MSDOSStubFileName",
+    "switch": "STUB:",
+    "comment": "MS-DOS Stub File Name",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "ModuleDefinitionFile",
+    "switch": "DEF:",
+    "comment": "Module Definition File",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "ManifestFile",
+    "switch": "ManifestFile:",
+    "comment": "Manifest File",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "ProgramDatabaseFile",
+    "switch": "PDB:",
+    "comment": "Generate Program Database File",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "StripPrivateSymbols",
+    "switch": "PDBSTRIPPED:",
+    "comment": "Strip Private Symbols",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "MapFileName",
+    "switch": "MAP:",
+    "comment": "Map File Name",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "UserRequired"
+    ]
+  },
+  {
+    "name": "HeapReserveSize",
+    "switch": "HEAP:",
+    "comment": "Heap Reserve Size",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "HeapCommitSize",
+    "switch": "HEAP",
+    "comment": "Heap Commit Size",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "UserRequired"
+    ]
+  },
+  {
+    "name": "StackReserveSize",
+    "switch": "STACK:",
+    "comment": "Stack Reserve Size",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "StackCommitSize",
+    "switch": "STACK",
+    "comment": "Stack Commit Size",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "UserRequired"
+    ]
+  },
+  {
+    "name": "FunctionOrder",
+    "switch": "ORDER:@",
+    "comment": "Function Order",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "ProfileGuidedDatabase",
+    "switch": "PGD:",
+    "comment": "Profile Guided Database",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "MidlCommandFile",
+    "switch": "MIDL:@",
+    "comment": "MIDL Commands",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "MergedIDLBaseFileName",
+    "switch": "IDLOUT:",
+    "comment": "Merged IDL Base File Name",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "TypeLibraryFile",
+    "switch": "TLBOUT:",
+    "comment": "Type Library",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "WindowsMetadataFile",
+    "switch": "WINMDFILE:",
+    "comment": "Windows Metadata File",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "WindowsMetadataLinkKeyFile",
+    "switch": "WINMDKEYFILE:",
+    "comment": "Windows Metadata Key File",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "WindowsMetadataKeyContainer",
+    "switch": "WINMDKEYCONTAINER:",
+    "comment": "Windows Metadata Key Container",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "EntryPointSymbol",
+    "switch": "ENTRY:",
+    "comment": "Entry Point",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "BaseAddress",
+    "switch": "BASE:",
+    "comment": "Base Address",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "ImportLibrary",
+    "switch": "IMPLIB:",
+    "comment": "Import Library",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "MergeSections",
+    "switch": "MERGE:",
+    "comment": "Merge Sections",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "LinkKeyFile",
+    "switch": "KEYFILE:",
+    "comment": "Key File",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "KeyContainer",
+    "switch": "KEYCONTAINER:",
+    "comment": "Key Container",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "TypeLibraryResourceID",
+    "switch": "TLBID:",
+    "comment": "TypeLib Resource ID",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "SectionAlignment",
+    "switch": "ALIGN:",
+    "comment": "SectionAlignment",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  }
+]

+ 1194 - 0
Templates/MSBuild/FlagTables/v141_CL.json

@@ -0,0 +1,1194 @@
+[
+  {
+    "name": "DebugInformationFormat",
+    "switch": "",
+    "comment": "None",
+    "value": "None",
+    "flags": []
+  },
+  {
+    "name": "DebugInformationFormat",
+    "switch": "Z7",
+    "comment": "C7 compatible",
+    "value": "OldStyle",
+    "flags": []
+  },
+  {
+    "name": "DebugInformationFormat",
+    "switch": "Zi",
+    "comment": "Program Database",
+    "value": "ProgramDatabase",
+    "flags": []
+  },
+  {
+    "name": "DebugInformationFormat",
+    "switch": "ZI",
+    "comment": "Program Database for Edit And Continue",
+    "value": "EditAndContinue",
+    "flags": []
+  },
+  {
+    "name": "CompileAsManaged",
+    "switch": "",
+    "comment": "No Common Language RunTime Support",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "CompileAsManaged",
+    "switch": "clr",
+    "comment": "Common Language RunTime Support",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "CompileAsManaged",
+    "switch": "clr:pure",
+    "comment": "Pure MSIL Common Language RunTime Support",
+    "value": "Pure",
+    "flags": []
+  },
+  {
+    "name": "CompileAsManaged",
+    "switch": "clr:safe",
+    "comment": "Safe MSIL Common Language RunTime Support",
+    "value": "Safe",
+    "flags": []
+  },
+  {
+    "name": "WarningLevel",
+    "switch": "W0",
+    "comment": "Turn Off All Warnings",
+    "value": "TurnOffAllWarnings",
+    "flags": []
+  },
+  {
+    "name": "WarningLevel",
+    "switch": "W1",
+    "comment": "Level1",
+    "value": "Level1",
+    "flags": []
+  },
+  {
+    "name": "WarningLevel",
+    "switch": "W2",
+    "comment": "Level2",
+    "value": "Level2",
+    "flags": []
+  },
+  {
+    "name": "WarningLevel",
+    "switch": "W3",
+    "comment": "Level3",
+    "value": "Level3",
+    "flags": []
+  },
+  {
+    "name": "WarningLevel",
+    "switch": "W4",
+    "comment": "Level4",
+    "value": "Level4",
+    "flags": []
+  },
+  {
+    "name": "WarningLevel",
+    "switch": "Wall",
+    "comment": "EnableAllWarnings",
+    "value": "EnableAllWarnings",
+    "flags": []
+  },
+  {
+    "name": "DiagnosticsFormat",
+    "switch": "diagnostics:caret",
+    "comment": "Caret",
+    "value": "Caret",
+    "flags": []
+  },
+  {
+    "name": "DiagnosticsFormat",
+    "switch": "diagnostics:column",
+    "comment": "Column Info",
+    "value": "Column",
+    "flags": []
+  },
+  {
+    "name": "DiagnosticsFormat",
+    "switch": "diagnostics:classic",
+    "comment": "Classic",
+    "value": "Classic",
+    "flags": []
+  },
+  {
+    "name": "Optimization",
+    "switch": "",
+    "comment": "Custom",
+    "value": "Custom",
+    "flags": []
+  },
+  {
+    "name": "Optimization",
+    "switch": "Od",
+    "comment": "Disabled",
+    "value": "Disabled",
+    "flags": []
+  },
+  {
+    "name": "Optimization",
+    "switch": "O1",
+    "comment": "Maximum Optimization (Favor Size)",
+    "value": "MinSpace",
+    "flags": []
+  },
+  {
+    "name": "Optimization",
+    "switch": "O2",
+    "comment": "Maximum Optimization (Favor Speed)",
+    "value": "MaxSpeed",
+    "flags": []
+  },
+  {
+    "name": "Optimization",
+    "switch": "Ox",
+    "comment": "Optimizations (Favor Speed)",
+    "value": "Full",
+    "flags": []
+  },
+  {
+    "name": "InlineFunctionExpansion",
+    "switch": "",
+    "comment": "Default",
+    "value": "Default",
+    "flags": []
+  },
+  {
+    "name": "InlineFunctionExpansion",
+    "switch": "Ob0",
+    "comment": "Disabled",
+    "value": "Disabled",
+    "flags": []
+  },
+  {
+    "name": "InlineFunctionExpansion",
+    "switch": "Ob1",
+    "comment": "Only __inline",
+    "value": "OnlyExplicitInline",
+    "flags": []
+  },
+  {
+    "name": "InlineFunctionExpansion",
+    "switch": "Ob2",
+    "comment": "Any Suitable",
+    "value": "AnySuitable",
+    "flags": []
+  },
+  {
+    "name": "FavorSizeOrSpeed",
+    "switch": "Os",
+    "comment": "Favor small code",
+    "value": "Size",
+    "flags": []
+  },
+  {
+    "name": "FavorSizeOrSpeed",
+    "switch": "Ot",
+    "comment": "Favor fast code",
+    "value": "Speed",
+    "flags": []
+  },
+  {
+    "name": "FavorSizeOrSpeed",
+    "switch": "",
+    "comment": "Neither",
+    "value": "Neither",
+    "flags": []
+  },
+  {
+    "name": "ExceptionHandling",
+    "switch": "EHa",
+    "comment": "Yes with SEH Exceptions",
+    "value": "Async",
+    "flags": []
+  },
+  {
+    "name": "ExceptionHandling",
+    "switch": "EHsc",
+    "comment": "Yes",
+    "value": "Sync",
+    "flags": []
+  },
+  {
+    "name": "ExceptionHandling",
+    "switch": "EHs",
+    "comment": "Yes with Extern C functions",
+    "value": "SyncCThrow",
+    "flags": []
+  },
+  {
+    "name": "ExceptionHandling",
+    "switch": "",
+    "comment": "No",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "BasicRuntimeChecks",
+    "switch": "RTCs",
+    "comment": "Stack Frames",
+    "value": "StackFrameRuntimeCheck",
+    "flags": []
+  },
+  {
+    "name": "BasicRuntimeChecks",
+    "switch": "RTCu",
+    "comment": "Uninitialized variables",
+    "value": "UninitializedLocalUsageCheck",
+    "flags": []
+  },
+  {
+    "name": "BasicRuntimeChecks",
+    "switch": "RTC1",
+    "comment": "Both (/RTC1, equiv. to /RTCsu)",
+    "value": "EnableFastChecks",
+    "flags": []
+  },
+  {
+    "name": "BasicRuntimeChecks",
+    "switch": "",
+    "comment": "Default",
+    "value": "Default",
+    "flags": []
+  },
+  {
+    "name": "RuntimeLibrary",
+    "switch": "MT",
+    "comment": "Multi-threaded",
+    "value": "MultiThreaded",
+    "flags": []
+  },
+  {
+    "name": "RuntimeLibrary",
+    "switch": "MTd",
+    "comment": "Multi-threaded Debug",
+    "value": "MultiThreadedDebug",
+    "flags": []
+  },
+  {
+    "name": "RuntimeLibrary",
+    "switch": "MD",
+    "comment": "Multi-threaded DLL",
+    "value": "MultiThreadedDLL",
+    "flags": []
+  },
+  {
+    "name": "RuntimeLibrary",
+    "switch": "MDd",
+    "comment": "Multi-threaded Debug DLL",
+    "value": "MultiThreadedDebugDLL",
+    "flags": []
+  },
+  {
+    "name": "StructMemberAlignment",
+    "switch": "Zp1",
+    "comment": "1 Byte",
+    "value": "1Byte",
+    "flags": []
+  },
+  {
+    "name": "StructMemberAlignment",
+    "switch": "Zp2",
+    "comment": "2 Bytes",
+    "value": "2Bytes",
+    "flags": []
+  },
+  {
+    "name": "StructMemberAlignment",
+    "switch": "Zp4",
+    "comment": "4 Byte",
+    "value": "4Bytes",
+    "flags": []
+  },
+  {
+    "name": "StructMemberAlignment",
+    "switch": "Zp8",
+    "comment": "8 Bytes",
+    "value": "8Bytes",
+    "flags": []
+  },
+  {
+    "name": "StructMemberAlignment",
+    "switch": "Zp16",
+    "comment": "16 Bytes",
+    "value": "16Bytes",
+    "flags": []
+  },
+  {
+    "name": "StructMemberAlignment",
+    "switch": "",
+    "comment": "Default",
+    "value": "Default",
+    "flags": []
+  },
+  {
+    "name": "BufferSecurityCheck",
+    "switch": "GS-",
+    "comment": "Disable Security Check",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "BufferSecurityCheck",
+    "switch": "GS",
+    "comment": "Enable Security Check",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "ControlFlowGuard",
+    "switch": "guard:cf",
+    "comment": "Yes",
+    "value": "Guard",
+    "flags": []
+  },
+  {
+    "name": "ControlFlowGuard",
+    "switch": "",
+    "comment": "No",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "EnableEnhancedInstructionSet",
+    "switch": "arch:SSE",
+    "comment": "Streaming SIMD Extensions",
+    "value": "StreamingSIMDExtensions",
+    "flags": []
+  },
+  {
+    "name": "EnableEnhancedInstructionSet",
+    "switch": "arch:SSE2",
+    "comment": "Streaming SIMD Extensions 2",
+    "value": "StreamingSIMDExtensions2",
+    "flags": []
+  },
+  {
+    "name": "EnableEnhancedInstructionSet",
+    "switch": "arch:AVX",
+    "comment": "Advanced Vector Extensions",
+    "value": "AdvancedVectorExtensions",
+    "flags": []
+  },
+  {
+    "name": "EnableEnhancedInstructionSet",
+    "switch": "arch:AVX2",
+    "comment": "Advanced Vector Extensions 2",
+    "value": "AdvancedVectorExtensions2",
+    "flags": []
+  },
+  {
+    "name": "EnableEnhancedInstructionSet",
+    "switch": "arch:IA32",
+    "comment": "No Enhanced Instructions",
+    "value": "NoExtensions",
+    "flags": []
+  },
+  {
+    "name": "EnableEnhancedInstructionSet",
+    "switch": "",
+    "comment": "Not Set",
+    "value": "NotSet",
+    "flags": []
+  },
+  {
+    "name": "FloatingPointModel",
+    "switch": "fp:precise",
+    "comment": "Precise",
+    "value": "Precise",
+    "flags": []
+  },
+  {
+    "name": "FloatingPointModel",
+    "switch": "fp:strict",
+    "comment": "Strict",
+    "value": "Strict",
+    "flags": []
+  },
+  {
+    "name": "FloatingPointModel",
+    "switch": "fp:fast",
+    "comment": "Fast",
+    "value": "Fast",
+    "flags": []
+  },
+  {
+    "name": "SpectreMitigation",
+    "switch": "Qspectre",
+    "comment": "Enabled",
+    "value": "Spectre",
+    "flags": []
+  },
+  {
+    "name": "SpectreMitigation",
+    "switch": "",
+    "comment": "Disabled",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "LanguageStandard",
+    "switch": "std:c++14",
+    "comment": "ISO C++14 Standard",
+    "value": "stdcpp14",
+    "flags": []
+  },
+  {
+    "name": "LanguageStandard",
+    "switch": "std:c++17",
+    "comment": "ISO C++17 Standard",
+    "value": "stdcpp17",
+    "flags": []
+  },
+  {
+    "name": "LanguageStandard",
+    "switch": "std:c++latest",
+    "comment": "ISO C++ Latest Draft Standard",
+    "value": "stdcpplatest",
+    "flags": []
+  },
+  {
+    "name": "PrecompiledHeader",
+    "switch": "Yc",
+    "comment": "Create",
+    "value": "Create",
+    "flags": [
+      "UserValue",
+      "UserIgnored",
+      "Continue"
+    ]
+  },
+  {
+    "name": "PrecompiledHeader",
+    "switch": "Yu",
+    "comment": "Use",
+    "value": "Use",
+    "flags": [
+      "UserValue",
+      "UserIgnored",
+      "Continue"
+    ]
+  },
+  {
+    "name": "PrecompiledHeader",
+    "switch": "",
+    "comment": "Not Using Precompiled Headers",
+    "value": "NotUsing",
+    "flags": []
+  },
+  {
+    "name": "AssemblerOutput",
+    "switch": "",
+    "comment": "No Listing",
+    "value": "NoListing",
+    "flags": []
+  },
+  {
+    "name": "AssemblerOutput",
+    "switch": "FA",
+    "comment": "Assembly-Only Listing",
+    "value": "AssemblyCode",
+    "flags": []
+  },
+  {
+    "name": "AssemblerOutput",
+    "switch": "FAc",
+    "comment": "Assembly With Machine Code",
+    "value": "AssemblyAndMachineCode",
+    "flags": []
+  },
+  {
+    "name": "AssemblerOutput",
+    "switch": "FAs",
+    "comment": "Assembly With Source Code",
+    "value": "AssemblyAndSourceCode",
+    "flags": []
+  },
+  {
+    "name": "AssemblerOutput",
+    "switch": "FAcs",
+    "comment": "Assembly, Machine Code and Source",
+    "value": "All",
+    "flags": []
+  },
+  {
+    "name": "CallingConvention",
+    "switch": "Gd",
+    "comment": "__cdecl",
+    "value": "Cdecl",
+    "flags": []
+  },
+  {
+    "name": "CallingConvention",
+    "switch": "Gr",
+    "comment": "__fastcall",
+    "value": "FastCall",
+    "flags": []
+  },
+  {
+    "name": "CallingConvention",
+    "switch": "Gz",
+    "comment": "__stdcall",
+    "value": "StdCall",
+    "flags": []
+  },
+  {
+    "name": "CallingConvention",
+    "switch": "Gv",
+    "comment": "__vectorcall",
+    "value": "VectorCall",
+    "flags": []
+  },
+  {
+    "name": "CompileAs",
+    "switch": "",
+    "comment": "Default",
+    "value": "Default",
+    "flags": []
+  },
+  {
+    "name": "CompileAs",
+    "switch": "TC",
+    "comment": "Compile as C Code",
+    "value": "CompileAsC",
+    "flags": []
+  },
+  {
+    "name": "CompileAs",
+    "switch": "TP",
+    "comment": "Compile as C++ Code",
+    "value": "CompileAsCpp",
+    "flags": []
+  },
+  {
+    "name": "ErrorReporting",
+    "switch": "errorReport:none",
+    "comment": "Do Not Send Report",
+    "value": "None",
+    "flags": []
+  },
+  {
+    "name": "ErrorReporting",
+    "switch": "errorReport:prompt",
+    "comment": "Prompt Immediately",
+    "value": "Prompt",
+    "flags": []
+  },
+  {
+    "name": "ErrorReporting",
+    "switch": "errorReport:queue",
+    "comment": "Queue For Next Login",
+    "value": "Queue",
+    "flags": []
+  },
+  {
+    "name": "ErrorReporting",
+    "switch": "errorReport:send",
+    "comment": "Send Automatically",
+    "value": "Send",
+    "flags": []
+  },
+  {
+    "name": "CompileAsWinRT",
+    "switch": "ZW",
+    "comment": "Consume Windows Runtime Extension",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "WinRTNoStdLib",
+    "switch": "ZW:nostdlib",
+    "comment": "No Standard WinRT Libraries",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "SuppressStartupBanner",
+    "switch": "nologo",
+    "comment": "Suppress Startup Banner",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "TreatWarningAsError",
+    "switch": "WX-",
+    "comment": "Treat Warnings As Errors",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "TreatWarningAsError",
+    "switch": "WX",
+    "comment": "Treat Warnings As Errors",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "SDLCheck",
+    "switch": "sdl-",
+    "comment": "SDL checks",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "SDLCheck",
+    "switch": "sdl",
+    "comment": "SDL checks",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "MultiProcessorCompilation",
+    "switch": "MP",
+    "comment": "Multi-processor Compilation",
+    "value": "true",
+    "flags": [
+      "UserValue",
+      "UserIgnored",
+      "Continue"
+    ]
+  },
+  {
+    "name": "IntrinsicFunctions",
+    "switch": "Oi",
+    "comment": "Enable Intrinsic Functions",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "OmitFramePointers",
+    "switch": "Oy-",
+    "comment": "Omit Frame Pointers",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "OmitFramePointers",
+    "switch": "Oy",
+    "comment": "Omit Frame Pointers",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "EnableFiberSafeOptimizations",
+    "switch": "GT",
+    "comment": "Enable Fiber-Safe Optimizations",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "WholeProgramOptimization",
+    "switch": "GL",
+    "comment": "Whole Program Optimization",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "UndefineAllPreprocessorDefinitions",
+    "switch": "u",
+    "comment": "Undefine All Preprocessor Definitions",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "IgnoreStandardIncludePath",
+    "switch": "X",
+    "comment": "Ignore Standard Include Paths",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "PreprocessToFile",
+    "switch": "P",
+    "comment": "Preprocess to a File",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "PreprocessSuppressLineNumbers",
+    "switch": "EP",
+    "comment": "Preprocess Suppress Line Numbers",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "PreprocessKeepComments",
+    "switch": "C",
+    "comment": "Keep Comments",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "StringPooling",
+    "switch": "GF-",
+    "comment": "Enable String Pooling",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "StringPooling",
+    "switch": "GF",
+    "comment": "Enable String Pooling",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "MinimalRebuild",
+    "switch": "Gm-",
+    "comment": "Enable Minimal Rebuild",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "MinimalRebuild",
+    "switch": "Gm",
+    "comment": "Enable Minimal Rebuild",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "SmallerTypeCheck",
+    "switch": "RTCc",
+    "comment": "Smaller Type Check",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "FunctionLevelLinking",
+    "switch": "Gy-",
+    "comment": "Enable Function-Level Linking",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "FunctionLevelLinking",
+    "switch": "Gy",
+    "comment": "Enable Function-Level Linking",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "EnableParallelCodeGeneration",
+    "switch": "Qpar-",
+    "comment": "Enable Parallel Code Generation",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "EnableParallelCodeGeneration",
+    "switch": "Qpar",
+    "comment": "Enable Parallel Code Generation",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "FloatingPointExceptions",
+    "switch": "fp:except-",
+    "comment": "Enable Floating Point Exceptions",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "FloatingPointExceptions",
+    "switch": "fp:except",
+    "comment": "Enable Floating Point Exceptions",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "CreateHotpatchableImage",
+    "switch": "hotpatch",
+    "comment": "Create Hotpatchable Image",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "DisableLanguageExtensions",
+    "switch": "Za",
+    "comment": "Disable Language Extensions",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "ConformanceMode",
+    "switch": "permissive-",
+    "comment": "Conformance mode",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "TreatWChar_tAsBuiltInType",
+    "switch": "Zc:wchar_t-",
+    "comment": "Treat WChar_t As Built in Type",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "TreatWChar_tAsBuiltInType",
+    "switch": "Zc:wchar_t",
+    "comment": "Treat WChar_t As Built in Type",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "ForceConformanceInForLoopScope",
+    "switch": "Zc:forScope-",
+    "comment": "Force Conformance in For Loop Scope",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "ForceConformanceInForLoopScope",
+    "switch": "Zc:forScope",
+    "comment": "Force Conformance in For Loop Scope",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "RemoveUnreferencedCodeData",
+    "switch": "Zc:inline",
+    "comment": "Remove unreferenced code and data",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "EnforceTypeConversionRules",
+    "switch": "Zc:rvalueCast-",
+    "comment": "Enforce type conversion rules",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "EnforceTypeConversionRules",
+    "switch": "Zc:rvalueCast",
+    "comment": "Enforce type conversion rules",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "RuntimeTypeInfo",
+    "switch": "GR-",
+    "comment": "Enable Run-Time Type Information",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "RuntimeTypeInfo",
+    "switch": "GR",
+    "comment": "Enable Run-Time Type Information",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "OpenMPSupport",
+    "switch": "openmp-",
+    "comment": "Open MP Support",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "OpenMPSupport",
+    "switch": "openmp",
+    "comment": "Open MP Support",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "EnableModules",
+    "switch": "experimental:module",
+    "comment": "Enable C++ Modules (experimental)",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "ExpandAttributedSource",
+    "switch": "Fx",
+    "comment": "Expand Attributed Source",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "UseUnicodeForAssemblerListing",
+    "switch": "FAu",
+    "comment": "Use Unicode For Assembler Listing",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "GenerateXMLDocumentationFiles",
+    "switch": "doc",
+    "comment": "Generate XML Documentation Files",
+    "value": "true",
+    "flags": [
+      "UserValue",
+      "UserIgnored",
+      "Continue"
+    ]
+  },
+  {
+    "name": "BrowseInformation",
+    "switch": "FR",
+    "comment": "Enable Browse Information",
+    "value": "true",
+    "flags": [
+      "UserValue",
+      "UserIgnored",
+      "Continue"
+    ]
+  },
+  {
+    "name": "ShowIncludes",
+    "switch": "showIncludes",
+    "comment": "Show Includes",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "EnablePREfast",
+    "switch": "analyze-",
+    "comment": "Enable Code Analysis",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "EnablePREfast",
+    "switch": "analyze",
+    "comment": "Enable Code Analysis",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "UseFullPaths",
+    "switch": "FC",
+    "comment": "Use Full Paths",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "OmitDefaultLibName",
+    "switch": "Zl",
+    "comment": "Omit Default Library Name",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "AdditionalIncludeDirectories",
+    "switch": "I",
+    "comment": "Additional Include Directories",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "AdditionalUsingDirectories",
+    "switch": "AI",
+    "comment": "Additional #using Directories",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "PreprocessorDefinitions",
+    "switch": "D",
+    "comment": "Preprocessor Definitions",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "UndefinePreprocessorDefinitions",
+    "switch": "U",
+    "comment": "Undefine Preprocessor Definitions",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "DisableSpecificWarnings",
+    "switch": "wd",
+    "comment": "Disable Specific Warnings",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "ForcedIncludeFiles",
+    "switch": "FI",
+    "comment": "Forced Include File",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "ForcedUsingFiles",
+    "switch": "FU",
+    "comment": "Forced #using File",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "PREfastAdditionalOptions",
+    "switch": "analyze:",
+    "comment": "Additional Code Analysis Native options",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "PREfastAdditionalPlugins",
+    "switch": "analyze:plugin",
+    "comment": "Additional Code Analysis Native plugins",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "TreatSpecificWarningsAsErrors",
+    "switch": "we",
+    "comment": "Treat Specific Warnings As Errors",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "WarningVersion",
+    "switch": "Wv:",
+    "comment": "Warning Version",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "PreprocessOutputPath",
+    "switch": "Fi",
+    "comment": "Preprocess Output Path",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "PrecompiledHeaderFile",
+    "switch": "Yu",
+    "comment": "Precompiled Header File",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "UserRequired"
+    ]
+  },
+  {
+    "name": "PrecompiledHeaderFile",
+    "switch": "Yc",
+    "comment": "Precompiled Header File",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "UserRequired"
+    ]
+  },
+  {
+    "name": "PrecompiledHeaderOutputFile",
+    "switch": "Fp",
+    "comment": "Precompiled Header Output File",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "AssemblerListingLocation",
+    "switch": "Fa",
+    "comment": "ASM List Location",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "ObjectFileName",
+    "switch": "Fo",
+    "comment": "Object File Name",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "ProgramDataBaseFileName",
+    "switch": "Fd",
+    "comment": "Program Database File Name",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "XMLDocumentationFileName",
+    "switch": "doc",
+    "comment": "XML Documentation File Name",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "UserRequired"
+    ]
+  },
+  {
+    "name": "BrowseInformationFile",
+    "switch": "FR",
+    "comment": "Browse Information File",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "UserRequired"
+    ]
+  },
+  {
+    "name": "PREfastLog",
+    "switch": "analyze:log",
+    "comment": "Code Analysis Log",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "ProcessorNumber",
+    "switch": "MP",
+    "comment": "Number of processors",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "UserRequired"
+    ]
+  }
+]

+ 1343 - 0
Templates/MSBuild/FlagTables/v141_Link.json

@@ -0,0 +1,1343 @@
+[
+  {
+    "name": "ShowProgress",
+    "switch": "",
+    "comment": "Not Set",
+    "value": "NotSet",
+    "flags": []
+  },
+  {
+    "name": "ShowProgress",
+    "switch": "VERBOSE",
+    "comment": "Display all progress messages",
+    "value": "LinkVerbose",
+    "flags": []
+  },
+  {
+    "name": "ShowProgress",
+    "switch": "VERBOSE:Lib",
+    "comment": "For Libraries Searched",
+    "value": "LinkVerboseLib",
+    "flags": []
+  },
+  {
+    "name": "ShowProgress",
+    "switch": "VERBOSE:ICF",
+    "comment": "About COMDAT folding during optimized linking",
+    "value": "LinkVerboseICF",
+    "flags": []
+  },
+  {
+    "name": "ShowProgress",
+    "switch": "VERBOSE:REF",
+    "comment": "About data removed during optimized linking",
+    "value": "LinkVerboseREF",
+    "flags": []
+  },
+  {
+    "name": "ShowProgress",
+    "switch": "VERBOSE:SAFESEH",
+    "comment": "About Modules incompatible with SEH",
+    "value": "LinkVerboseSAFESEH",
+    "flags": []
+  },
+  {
+    "name": "ShowProgress",
+    "switch": "VERBOSE:CLR",
+    "comment": "About linker activity related to managed code",
+    "value": "LinkVerboseCLR",
+    "flags": []
+  },
+  {
+    "name": "ForceFileOutput",
+    "switch": "FORCE",
+    "comment": "Enabled",
+    "value": "Enabled",
+    "flags": []
+  },
+  {
+    "name": "ForceFileOutput",
+    "switch": "FORCE:MULTIPLE",
+    "comment": "Multiply Defined Symbol Only",
+    "value": "MultiplyDefinedSymbolOnly",
+    "flags": []
+  },
+  {
+    "name": "ForceFileOutput",
+    "switch": "FORCE:UNRESOLVED",
+    "comment": "Undefined Symbol Only",
+    "value": "UndefinedSymbolOnly",
+    "flags": []
+  },
+  {
+    "name": "CreateHotPatchableImage",
+    "switch": "FUNCTIONPADMIN",
+    "comment": "Enabled",
+    "value": "Enabled",
+    "flags": []
+  },
+  {
+    "name": "CreateHotPatchableImage",
+    "switch": "FUNCTIONPADMIN:5",
+    "comment": "X86 Image Only",
+    "value": "X86Image",
+    "flags": []
+  },
+  {
+    "name": "CreateHotPatchableImage",
+    "switch": "FUNCTIONPADMIN:6",
+    "comment": "X64 Image Only",
+    "value": "X64Image",
+    "flags": []
+  },
+  {
+    "name": "CreateHotPatchableImage",
+    "switch": "FUNCTIONPADMIN:16",
+    "comment": "Itanium Image Only",
+    "value": "ItaniumImage",
+    "flags": []
+  },
+  {
+    "name": "UACExecutionLevel",
+    "switch": "level='asInvoker'",
+    "comment": "asInvoker",
+    "value": "AsInvoker",
+    "flags": []
+  },
+  {
+    "name": "UACExecutionLevel",
+    "switch": "level='highestAvailable'",
+    "comment": "highestAvailable",
+    "value": "HighestAvailable",
+    "flags": []
+  },
+  {
+    "name": "UACExecutionLevel",
+    "switch": "level='requireAdministrator'",
+    "comment": "requireAdministrator",
+    "value": "RequireAdministrator",
+    "flags": []
+  },
+  {
+    "name": "GenerateDebugInformation",
+    "switch": "",
+    "comment": "No",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "GenerateDebugInformation",
+    "switch": "DEBUG",
+    "comment": "Generate Debug Information",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "GenerateDebugInformation",
+    "switch": "DEBUG:FASTLINK",
+    "comment": "Generate Debug Information optimized for faster links",
+    "value": "DebugFastLink",
+    "flags": []
+  },
+  {
+    "name": "GenerateDebugInformation",
+    "switch": "DEBUG:FULL",
+    "comment": "Generate Debug Information optimized for sharing and publishing",
+    "value": "DebugFull",
+    "flags": []
+  },
+  {
+    "name": "SubSystem",
+    "switch": "",
+    "comment": "Not Set",
+    "value": "NotSet",
+    "flags": []
+  },
+  {
+    "name": "SubSystem",
+    "switch": "SUBSYSTEM:CONSOLE",
+    "comment": "Console",
+    "value": "Console",
+    "flags": []
+  },
+  {
+    "name": "SubSystem",
+    "switch": "SUBSYSTEM:WINDOWS",
+    "comment": "Windows",
+    "value": "Windows",
+    "flags": []
+  },
+  {
+    "name": "SubSystem",
+    "switch": "SUBSYSTEM:NATIVE",
+    "comment": "Native",
+    "value": "Native",
+    "flags": []
+  },
+  {
+    "name": "SubSystem",
+    "switch": "SUBSYSTEM:EFI_APPLICATION",
+    "comment": "EFI Application",
+    "value": "EFI Application",
+    "flags": []
+  },
+  {
+    "name": "SubSystem",
+    "switch": "SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER",
+    "comment": "EFI Boot Service Driver",
+    "value": "EFI Boot Service Driver",
+    "flags": []
+  },
+  {
+    "name": "SubSystem",
+    "switch": "SUBSYSTEM:EFI_ROM",
+    "comment": "EFI ROM",
+    "value": "EFI ROM",
+    "flags": []
+  },
+  {
+    "name": "SubSystem",
+    "switch": "SUBSYSTEM:EFI_RUNTIME_DRIVER",
+    "comment": "EFI Runtime",
+    "value": "EFI Runtime",
+    "flags": []
+  },
+  {
+    "name": "SubSystem",
+    "switch": "SUBSYSTEM:POSIX",
+    "comment": "POSIX",
+    "value": "POSIX",
+    "flags": []
+  },
+  {
+    "name": "Driver",
+    "switch": "",
+    "comment": "Not Set",
+    "value": "NotSet",
+    "flags": []
+  },
+  {
+    "name": "Driver",
+    "switch": "Driver",
+    "comment": "Driver",
+    "value": "Driver",
+    "flags": []
+  },
+  {
+    "name": "Driver",
+    "switch": "DRIVER:UPONLY",
+    "comment": "UP Only",
+    "value": "UpOnly",
+    "flags": []
+  },
+  {
+    "name": "Driver",
+    "switch": "DRIVER:WDM",
+    "comment": "WDM",
+    "value": "WDM",
+    "flags": []
+  },
+  {
+    "name": "LinkTimeCodeGeneration",
+    "switch": "",
+    "comment": "Default",
+    "value": "Default",
+    "flags": []
+  },
+  {
+    "name": "LinkTimeCodeGeneration",
+    "switch": "LTCG:incremental",
+    "comment": "Use Fast Link Time Code Generation",
+    "value": "UseFastLinkTimeCodeGeneration",
+    "flags": []
+  },
+  {
+    "name": "LinkTimeCodeGeneration",
+    "switch": "LTCG",
+    "comment": "Use Link Time Code Generation",
+    "value": "UseLinkTimeCodeGeneration",
+    "flags": []
+  },
+  {
+    "name": "LinkTimeCodeGeneration",
+    "switch": "LTCG:PGInstrument",
+    "comment": "Profile Guided Optimization - Instrument",
+    "value": "PGInstrument",
+    "flags": []
+  },
+  {
+    "name": "LinkTimeCodeGeneration",
+    "switch": "LTCG:PGOptimize",
+    "comment": "Profile Guided Optimization - Optimization",
+    "value": "PGOptimization",
+    "flags": []
+  },
+  {
+    "name": "LinkTimeCodeGeneration",
+    "switch": "LTCG:PGUpdate",
+    "comment": "Profile Guided Optimization - Update",
+    "value": "PGUpdate",
+    "flags": []
+  },
+  {
+    "name": "GenerateWindowsMetadata",
+    "switch": "WINMD",
+    "comment": "Yes",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "GenerateWindowsMetadata",
+    "switch": "WINMD:NO",
+    "comment": "No",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "WindowsMetadataSignHash",
+    "switch": "WINMDSIGNHASH:SHA1",
+    "comment": "SHA1",
+    "value": "SHA1",
+    "flags": []
+  },
+  {
+    "name": "WindowsMetadataSignHash",
+    "switch": "WINMDSIGNHASH:SHA256",
+    "comment": "SHA256",
+    "value": "SHA256",
+    "flags": []
+  },
+  {
+    "name": "WindowsMetadataSignHash",
+    "switch": "WINMDSIGNHASH:SHA384",
+    "comment": "SHA384",
+    "value": "SHA384",
+    "flags": []
+  },
+  {
+    "name": "WindowsMetadataSignHash",
+    "switch": "WINMDSIGNHASH:SHA512",
+    "comment": "SHA512",
+    "value": "SHA512",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "",
+    "comment": "Not Set",
+    "value": "NotSet",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:ARM",
+    "comment": "MachineARM",
+    "value": "MachineARM",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:ARM64",
+    "comment": "MachineARM64",
+    "value": "MachineARM64",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:EBC",
+    "comment": "MachineEBC",
+    "value": "MachineEBC",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:IA64",
+    "comment": "MachineIA64",
+    "value": "MachineIA64",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:MIPS",
+    "comment": "MachineMIPS",
+    "value": "MachineMIPS",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:MIPS16",
+    "comment": "MachineMIPS16",
+    "value": "MachineMIPS16",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:MIPSFPU",
+    "comment": "MachineMIPSFPU",
+    "value": "MachineMIPSFPU",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:MIPSFPU16",
+    "comment": "MachineMIPSFPU16",
+    "value": "MachineMIPSFPU16",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:SH4",
+    "comment": "MachineSH4",
+    "value": "MachineSH4",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:THUMB",
+    "comment": "MachineTHUMB",
+    "value": "MachineTHUMB",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:X64",
+    "comment": "MachineX64",
+    "value": "MachineX64",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:X86",
+    "comment": "MachineX86",
+    "value": "MachineX86",
+    "flags": []
+  },
+  {
+    "name": "CLRThreadAttribute",
+    "switch": "CLRTHREADATTRIBUTE:MTA",
+    "comment": "MTA threading attribute",
+    "value": "MTAThreadingAttribute",
+    "flags": []
+  },
+  {
+    "name": "CLRThreadAttribute",
+    "switch": "CLRTHREADATTRIBUTE:STA",
+    "comment": "STA threading attribute",
+    "value": "STAThreadingAttribute",
+    "flags": []
+  },
+  {
+    "name": "CLRThreadAttribute",
+    "switch": "CLRTHREADATTRIBUTE:NONE",
+    "comment": "Default threading attribute",
+    "value": "DefaultThreadingAttribute",
+    "flags": []
+  },
+  {
+    "name": "CLRImageType",
+    "switch": "CLRIMAGETYPE:IJW",
+    "comment": "Force IJW image",
+    "value": "ForceIJWImage",
+    "flags": []
+  },
+  {
+    "name": "CLRImageType",
+    "switch": "CLRIMAGETYPE:PURE",
+    "comment": "Force Pure IL Image",
+    "value": "ForcePureILImage",
+    "flags": []
+  },
+  {
+    "name": "CLRImageType",
+    "switch": "CLRIMAGETYPE:SAFE",
+    "comment": "Force Safe IL Image",
+    "value": "ForceSafeILImage",
+    "flags": []
+  },
+  {
+    "name": "CLRImageType",
+    "switch": "",
+    "comment": "Default image type",
+    "value": "Default",
+    "flags": []
+  },
+  {
+    "name": "SignHash",
+    "switch": "CLRSIGNHASH:SHA1",
+    "comment": "SHA1",
+    "value": "SHA1",
+    "flags": []
+  },
+  {
+    "name": "SignHash",
+    "switch": "CLRSIGNHASH:SHA256",
+    "comment": "SHA256",
+    "value": "SHA256",
+    "flags": []
+  },
+  {
+    "name": "SignHash",
+    "switch": "CLRSIGNHASH:SHA384",
+    "comment": "SHA384",
+    "value": "SHA384",
+    "flags": []
+  },
+  {
+    "name": "SignHash",
+    "switch": "CLRSIGNHASH:SHA512",
+    "comment": "SHA512",
+    "value": "SHA512",
+    "flags": []
+  },
+  {
+    "name": "LinkErrorReporting",
+    "switch": "ERRORREPORT:PROMPT",
+    "comment": "PromptImmediately",
+    "value": "PromptImmediately",
+    "flags": []
+  },
+  {
+    "name": "LinkErrorReporting",
+    "switch": "ERRORREPORT:QUEUE",
+    "comment": "Queue For Next Login",
+    "value": "QueueForNextLogin",
+    "flags": []
+  },
+  {
+    "name": "LinkErrorReporting",
+    "switch": "ERRORREPORT:SEND",
+    "comment": "Send Error Report",
+    "value": "SendErrorReport",
+    "flags": []
+  },
+  {
+    "name": "LinkErrorReporting",
+    "switch": "ERRORREPORT:NONE",
+    "comment": "No Error Report",
+    "value": "NoErrorReport",
+    "flags": []
+  },
+  {
+    "name": "CLRSupportLastError",
+    "switch": "CLRSupportLastError",
+    "comment": "Enabled",
+    "value": "Enabled",
+    "flags": []
+  },
+  {
+    "name": "CLRSupportLastError",
+    "switch": "CLRSupportLastError:NO",
+    "comment": "Disabled",
+    "value": "Disabled",
+    "flags": []
+  },
+  {
+    "name": "CLRSupportLastError",
+    "switch": "CLRSupportLastError:SYSTEMDLL",
+    "comment": "System Dlls Only",
+    "value": "SystemDlls",
+    "flags": []
+  },
+  {
+    "name": "LinkControlFlowGuard",
+    "switch": "guard:cf",
+    "comment": "Enable Security Check with Guard",
+    "value": "Guard",
+    "flags": []
+  },
+  {
+    "name": "LinkIncremental",
+    "switch": "INCREMENTAL:NO",
+    "comment": "Enable Incremental Linking",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "LinkIncremental",
+    "switch": "INCREMENTAL",
+    "comment": "Enable Incremental Linking",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "SuppressStartupBanner",
+    "switch": "NOLOGO",
+    "comment": "Suppress Startup Banner",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "LinkStatus",
+    "switch": "LTCG:NOSTATUS",
+    "comment": "Link Status",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "LinkStatus",
+    "switch": "LTCG:STATUS",
+    "comment": "Link Status",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "PreventDllBinding",
+    "switch": "ALLOWBIND:NO",
+    "comment": "Prevent Dll Binding",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "PreventDllBinding",
+    "switch": "ALLOWBIND",
+    "comment": "Prevent Dll Binding",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "TreatLinkerWarningAsErrors",
+    "switch": "WX:NO",
+    "comment": "Treat Linker Warning As Errors",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "TreatLinkerWarningAsErrors",
+    "switch": "WX",
+    "comment": "Treat Linker Warning As Errors",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "IgnoreAllDefaultLibraries",
+    "switch": "NODEFAULTLIB",
+    "comment": "Ignore All Default Libraries",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "GenerateManifest",
+    "switch": "MANIFEST:NO",
+    "comment": "Generate Manifest",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "GenerateManifest",
+    "switch": "MANIFEST",
+    "comment": "Generate Manifest",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "AllowIsolation",
+    "switch": "ALLOWISOLATION:NO",
+    "comment": "Allow Isolation",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "AllowIsolation",
+    "switch": "",
+    "comment": "Allow Isolation",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "EnableUAC",
+    "switch": "MANIFESTUAC:NO",
+    "comment": "Enable User Account Control (UAC)",
+    "value": "false",
+    "flags": [
+      "UserValue",
+      "UserIgnored",
+      "Continue"
+    ]
+  },
+  {
+    "name": "EnableUAC",
+    "switch": "MANIFESTUAC:",
+    "comment": "Enable User Account Control (UAC)",
+    "value": "true",
+    "flags": [
+      "UserValue",
+      "UserIgnored",
+      "Continue"
+    ]
+  },
+  {
+    "name": "UACUIAccess",
+    "switch": "uiAccess='false'",
+    "comment": "UAC Bypass UI Protection",
+    "value": "false",
+    "flags": [
+      "UserValue",
+      "UserRequired"
+    ]
+  },
+  {
+    "name": "UACUIAccess",
+    "switch": "MANIFESTUAC:",
+    "comment": "UAC Bypass UI Protection",
+    "value": "true",
+    "flags": [
+      "UserValue",
+      "UserRequired"
+    ]
+  },
+  {
+    "name": "UACUIAccess",
+    "switch": "uiAccess='false'",
+    "comment": "UAC Bypass UI Protection",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "UACUIAccess",
+    "switch": "uiAccess='true'",
+    "comment": "UAC Bypass UI Protection",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "ManifestEmbed",
+    "switch": "manifest:embed",
+    "comment": "Embed Manifest",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "GenerateMapFile",
+    "switch": "MAP",
+    "comment": "Generate Map File",
+    "value": "true",
+    "flags": [
+      "UserValue",
+      "UserIgnored",
+      "Continue"
+    ]
+  },
+  {
+    "name": "MapExports",
+    "switch": "MAPINFO:EXPORTS",
+    "comment": "Map Exports",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "AssemblyDebug",
+    "switch": "ASSEMBLYDEBUG:DISABLE",
+    "comment": "Debuggable Assembly",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "AssemblyDebug",
+    "switch": "ASSEMBLYDEBUG",
+    "comment": "Debuggable Assembly",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "LargeAddressAware",
+    "switch": "LARGEADDRESSAWARE:NO",
+    "comment": "Enable Large Addresses",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "LargeAddressAware",
+    "switch": "LARGEADDRESSAWARE",
+    "comment": "Enable Large Addresses",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "TerminalServerAware",
+    "switch": "TSAWARE:NO",
+    "comment": "Terminal Server",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "TerminalServerAware",
+    "switch": "TSAWARE",
+    "comment": "Terminal Server",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "SwapRunFromCD",
+    "switch": "SWAPRUN:CD",
+    "comment": "Swap Run From CD",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "SwapRunFromNET",
+    "switch": "SWAPRUN:NET",
+    "comment": "Swap Run From Network",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "OptimizeReferences",
+    "switch": "OPT:NOREF",
+    "comment": "References",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "OptimizeReferences",
+    "switch": "OPT:REF",
+    "comment": "References",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "EnableCOMDATFolding",
+    "switch": "OPT:NOICF",
+    "comment": "Enable COMDAT Folding",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "EnableCOMDATFolding",
+    "switch": "OPT:ICF",
+    "comment": "Enable COMDAT Folding",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "IgnoreEmbeddedIDL",
+    "switch": "IGNOREIDL",
+    "comment": "Ignore Embedded IDL",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "AppContainer",
+    "switch": "APPCONTAINER",
+    "comment": "",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "WindowsMetadataLinkDelaySign",
+    "switch": "WINMDDELAYSIGN:NO",
+    "comment": "Windows Metadata Delay Sign",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "WindowsMetadataLinkDelaySign",
+    "switch": "WINMDDELAYSIGN",
+    "comment": "Windows Metadata Delay Sign",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "NoEntryPoint",
+    "switch": "NOENTRY",
+    "comment": "No Entry Point",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "SetChecksum",
+    "switch": "RELEASE",
+    "comment": "Set Checksum",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "RandomizedBaseAddress",
+    "switch": "DYNAMICBASE:NO",
+    "comment": "Randomized Base Address",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "RandomizedBaseAddress",
+    "switch": "DYNAMICBASE",
+    "comment": "Randomized Base Address",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "FixedBaseAddress",
+    "switch": "FIXED:NO",
+    "comment": "Fixed Base Address",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "FixedBaseAddress",
+    "switch": "FIXED",
+    "comment": "Fixed Base Address",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "DataExecutionPrevention",
+    "switch": "NXCOMPAT:NO",
+    "comment": "Data Execution Prevention (DEP)",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "DataExecutionPrevention",
+    "switch": "NXCOMPAT",
+    "comment": "Data Execution Prevention (DEP)",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "TurnOffAssemblyGeneration",
+    "switch": "NOASSEMBLY",
+    "comment": "Turn Off Assembly Generation",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "SupportUnloadOfDelayLoadedDLL",
+    "switch": "DELAY:UNLOAD",
+    "comment": "Unload delay loaded DLL",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "SupportNobindOfDelayLoadedDLL",
+    "switch": "DELAY:NOBIND",
+    "comment": "Nobind delay loaded DLL",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "Profile",
+    "switch": "PROFILE",
+    "comment": "Profile",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "LinkDelaySign",
+    "switch": "DELAYSIGN:NO",
+    "comment": "Delay Sign",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "LinkDelaySign",
+    "switch": "DELAYSIGN",
+    "comment": "Delay Sign",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "CLRUnmanagedCodeCheck",
+    "switch": "CLRUNMANAGEDCODECHECK:NO",
+    "comment": "CLR Unmanaged Code Check",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "CLRUnmanagedCodeCheck",
+    "switch": "CLRUNMANAGEDCODECHECK",
+    "comment": "CLR Unmanaged Code Check",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "DetectOneDefinitionRule",
+    "switch": "ODR",
+    "comment": "Detect One Definition Rule violations",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "ImageHasSafeExceptionHandlers",
+    "switch": "SAFESEH:NO",
+    "comment": "Image Has Safe Exception Handlers",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "ImageHasSafeExceptionHandlers",
+    "switch": "SAFESEH",
+    "comment": "Image Has Safe Exception Handlers",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "LinkDLL",
+    "switch": "DLL",
+    "comment": "",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "AdditionalLibraryDirectories",
+    "switch": "LIBPATH:",
+    "comment": "Additional Library Directories",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "Natvis",
+    "switch": "NATVIS:",
+    "comment": "Natvis files",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "IgnoreSpecificDefaultLibraries",
+    "switch": "NODEFAULTLIB:",
+    "comment": "Ignore Specific Default Libraries",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "AddModuleNamesToAssembly",
+    "switch": "ASSEMBLYMODULE:",
+    "comment": "Add Module to Assembly",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "EmbedManagedResourceFile",
+    "switch": "ASSEMBLYRESOURCE:",
+    "comment": "Embed Managed Resource File",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "ForceSymbolReferences",
+    "switch": "INCLUDE:",
+    "comment": "Force Symbol References",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "DelayLoadDLLs",
+    "switch": "DELAYLOAD:",
+    "comment": "Delay Loaded Dlls",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "AssemblyLinkResource",
+    "switch": "ASSEMBLYLINKRESOURCE:",
+    "comment": "Assembly Link Resource",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "AdditionalManifestDependencies",
+    "switch": "MANIFESTDEPENDENCY:",
+    "comment": "Additional Manifest Dependencies",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "ManifestInput",
+    "switch": "manifestinput:",
+    "comment": "Manifest Input",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "OutputFile",
+    "switch": "OUT:",
+    "comment": "Output File",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "Version",
+    "switch": "VERSION:",
+    "comment": "Version",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "SpecifySectionAttributes",
+    "switch": "SECTION:",
+    "comment": "Specify Section Attributes",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "MSDOSStubFileName",
+    "switch": "STUB:",
+    "comment": "MS-DOS Stub File Name",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "ModuleDefinitionFile",
+    "switch": "DEF:",
+    "comment": "Module Definition File",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "ManifestFile",
+    "switch": "ManifestFile:",
+    "comment": "Manifest File",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "ProgramDatabaseFile",
+    "switch": "PDB:",
+    "comment": "Generate Program Database File",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "StripPrivateSymbols",
+    "switch": "PDBSTRIPPED:",
+    "comment": "Strip Private Symbols",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "MapFileName",
+    "switch": "MAP:",
+    "comment": "Map File Name",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "UserRequired"
+    ]
+  },
+  {
+    "name": "HeapReserveSize",
+    "switch": "HEAP:",
+    "comment": "Heap Reserve Size",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "HeapCommitSize",
+    "switch": "HEAP",
+    "comment": "Heap Commit Size",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "UserRequired"
+    ]
+  },
+  {
+    "name": "StackReserveSize",
+    "switch": "STACK:",
+    "comment": "Stack Reserve Size",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "StackCommitSize",
+    "switch": "STACK",
+    "comment": "Stack Commit Size",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "UserRequired"
+    ]
+  },
+  {
+    "name": "FunctionOrder",
+    "switch": "ORDER:@",
+    "comment": "Function Order",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "ProfileGuidedDatabase",
+    "switch": "PGD:",
+    "comment": "Profile Guided Database",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "MidlCommandFile",
+    "switch": "MIDL:@",
+    "comment": "MIDL Commands",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "MergedIDLBaseFileName",
+    "switch": "IDLOUT:",
+    "comment": "Merged IDL Base File Name",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "TypeLibraryFile",
+    "switch": "TLBOUT:",
+    "comment": "Type Library",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "WindowsMetadataFile",
+    "switch": "WINMDFILE:",
+    "comment": "Windows Metadata File",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "WindowsMetadataLinkKeyFile",
+    "switch": "WINMDKEYFILE:",
+    "comment": "Windows Metadata Key File",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "WindowsMetadataKeyContainer",
+    "switch": "WINMDKEYCONTAINER:",
+    "comment": "Windows Metadata Key Container",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "EntryPointSymbol",
+    "switch": "ENTRY:",
+    "comment": "Entry Point",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "BaseAddress",
+    "switch": "BASE:",
+    "comment": "Base Address",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "ImportLibrary",
+    "switch": "IMPLIB:",
+    "comment": "Import Library",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "MergeSections",
+    "switch": "MERGE:",
+    "comment": "Merge Sections",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "LinkKeyFile",
+    "switch": "KEYFILE:",
+    "comment": "Key File",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "KeyContainer",
+    "switch": "KEYCONTAINER:",
+    "comment": "Key Container",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "TypeLibraryResourceID",
+    "switch": "TLBID:",
+    "comment": "TypeLib Resource ID",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "SectionAlignment",
+    "switch": "ALIGN:",
+    "comment": "SectionAlignment",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  }
+]

+ 297 - 0
Templates/MSBuild/FlagTables/v14_LIB.json

@@ -0,0 +1,297 @@
+[
+  {
+    "name": "ErrorReporting",
+    "switch": "ERRORREPORT:PROMPT",
+    "comment": "PromptImmediately",
+    "value": "PromptImmediately",
+    "flags": []
+  },
+  {
+    "name": "ErrorReporting",
+    "switch": "ERRORREPORT:QUEUE",
+    "comment": "Queue For Next Login",
+    "value": "QueueForNextLogin",
+    "flags": []
+  },
+  {
+    "name": "ErrorReporting",
+    "switch": "ERRORREPORT:SEND",
+    "comment": "Send Error Report",
+    "value": "SendErrorReport",
+    "flags": []
+  },
+  {
+    "name": "ErrorReporting",
+    "switch": "ERRORREPORT:NONE",
+    "comment": "No Error Report",
+    "value": "NoErrorReport",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:ARM",
+    "comment": "MachineARM",
+    "value": "MachineARM",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:EBC",
+    "comment": "MachineEBC",
+    "value": "MachineEBC",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:IA64",
+    "comment": "MachineIA64",
+    "value": "MachineIA64",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:MIPS",
+    "comment": "MachineMIPS",
+    "value": "MachineMIPS",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:MIPS16",
+    "comment": "MachineMIPS16",
+    "value": "MachineMIPS16",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:MIPSFPU",
+    "comment": "MachineMIPSFPU",
+    "value": "MachineMIPSFPU",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:MIPSFPU16",
+    "comment": "MachineMIPSFPU16",
+    "value": "MachineMIPSFPU16",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:SH4",
+    "comment": "MachineSH4",
+    "value": "MachineSH4",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:THUMB",
+    "comment": "MachineTHUMB",
+    "value": "MachineTHUMB",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:X64",
+    "comment": "MachineX64",
+    "value": "MachineX64",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:X86",
+    "comment": "MachineX86",
+    "value": "MachineX86",
+    "flags": []
+  },
+  {
+    "name": "SubSystem",
+    "switch": "SUBSYSTEM:CONSOLE",
+    "comment": "Console",
+    "value": "Console",
+    "flags": []
+  },
+  {
+    "name": "SubSystem",
+    "switch": "SUBSYSTEM:WINDOWS",
+    "comment": "Windows",
+    "value": "Windows",
+    "flags": []
+  },
+  {
+    "name": "SubSystem",
+    "switch": "SUBSYSTEM:NATIVE",
+    "comment": "Native",
+    "value": "Native",
+    "flags": []
+  },
+  {
+    "name": "SubSystem",
+    "switch": "SUBSYSTEM:EFI_APPLICATION",
+    "comment": "EFI Application",
+    "value": "EFI Application",
+    "flags": []
+  },
+  {
+    "name": "SubSystem",
+    "switch": "SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER",
+    "comment": "EFI Boot Service Driver",
+    "value": "EFI Boot Service Driver",
+    "flags": []
+  },
+  {
+    "name": "SubSystem",
+    "switch": "SUBSYSTEM:EFI_ROM",
+    "comment": "EFI ROM",
+    "value": "EFI ROM",
+    "flags": []
+  },
+  {
+    "name": "SubSystem",
+    "switch": "SUBSYSTEM:EFI_RUNTIME_DRIVER",
+    "comment": "EFI Runtime",
+    "value": "EFI Runtime",
+    "flags": []
+  },
+  {
+    "name": "SubSystem",
+    "switch": "SUBSYSTEM:WINDOWSCE",
+    "comment": "WindowsCE",
+    "value": "WindowsCE",
+    "flags": []
+  },
+  {
+    "name": "SubSystem",
+    "switch": "SUBSYSTEM:POSIX",
+    "comment": "POSIX",
+    "value": "POSIX",
+    "flags": []
+  },
+  {
+    "name": "SuppressStartupBanner",
+    "switch": "NOLOGO",
+    "comment": "Suppress Startup Banner",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "IgnoreAllDefaultLibraries",
+    "switch": "NODEFAULTLIB",
+    "comment": "Ignore All Default Libraries",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "TreatLibWarningAsErrors",
+    "switch": "WX:NO",
+    "comment": "Treat Lib Warning As Errors",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "TreatLibWarningAsErrors",
+    "switch": "WX",
+    "comment": "Treat Lib Warning As Errors",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "Verbose",
+    "switch": "VERBOSE",
+    "comment": "Verbose",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "LinkTimeCodeGeneration",
+    "switch": "LTCG",
+    "comment": "Link Time Code Generation",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "AdditionalLibraryDirectories",
+    "switch": "LIBPATH:",
+    "comment": "Additional Library Directories",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "IgnoreSpecificDefaultLibraries",
+    "switch": "NODEFAULTLIB:",
+    "comment": "Ignore Specific Default Libraries",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "ExportNamedFunctions",
+    "switch": "EXPORT:",
+    "comment": "Export Named Functions",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "RemoveObjects",
+    "switch": "REMOVE:",
+    "comment": "Remove Objects",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "OutputFile",
+    "switch": "OUT:",
+    "comment": "Output File",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "ModuleDefinitionFile",
+    "switch": "DEF:",
+    "comment": "Module Definition File Name",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "ForceSymbolReferences",
+    "switch": "INCLUDE:",
+    "comment": "Force Symbol References",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "DisplayLibrary",
+    "switch": "LIST:",
+    "comment": "Display Library to standard output",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "Name",
+    "switch": "NAME:",
+    "comment": "Name",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  }
+]

+ 295 - 0
Templates/MSBuild/FlagTables/v14_MASM.json

@@ -0,0 +1,295 @@
+[
+  {
+    "name": "PreserveIdentifierCase",
+    "switch": "",
+    "comment": "Default",
+    "value": "0",
+    "flags": []
+  },
+  {
+    "name": "PreserveIdentifierCase",
+    "switch": "Cp",
+    "comment": "Preserves Identifier Case (/Cp)",
+    "value": "1",
+    "flags": []
+  },
+  {
+    "name": "PreserveIdentifierCase",
+    "switch": "Cu",
+    "comment": "Maps all identifiers to upper case. (/Cu)",
+    "value": "2",
+    "flags": []
+  },
+  {
+    "name": "PreserveIdentifierCase",
+    "switch": "Cx",
+    "comment": "Preserves case in public and extern symbols. (/Cx)",
+    "value": "3",
+    "flags": []
+  },
+  {
+    "name": "WarningLevel",
+    "switch": "W0",
+    "comment": "Warning Level 0 (/W0)",
+    "value": "0",
+    "flags": []
+  },
+  {
+    "name": "WarningLevel",
+    "switch": "W1",
+    "comment": "Warning Level 1 (/W1)",
+    "value": "1",
+    "flags": []
+  },
+  {
+    "name": "WarningLevel",
+    "switch": "W2",
+    "comment": "Warning Level 2 (/W2)",
+    "value": "2",
+    "flags": []
+  },
+  {
+    "name": "WarningLevel",
+    "switch": "W3",
+    "comment": "Warning Level 3 (/W3)",
+    "value": "3",
+    "flags": []
+  },
+  {
+    "name": "PackAlignmentBoundary",
+    "switch": "",
+    "comment": "Default",
+    "value": "0",
+    "flags": []
+  },
+  {
+    "name": "PackAlignmentBoundary",
+    "switch": "Zp1",
+    "comment": "One Byte Boundary (/Zp1)",
+    "value": "1",
+    "flags": []
+  },
+  {
+    "name": "PackAlignmentBoundary",
+    "switch": "Zp2",
+    "comment": "Two Byte Boundary (/Zp2)",
+    "value": "2",
+    "flags": []
+  },
+  {
+    "name": "PackAlignmentBoundary",
+    "switch": "Zp4",
+    "comment": "Four Byte Boundary (/Zp4)",
+    "value": "3",
+    "flags": []
+  },
+  {
+    "name": "PackAlignmentBoundary",
+    "switch": "Zp8",
+    "comment": "Eight Byte Boundary (/Zp8)",
+    "value": "4",
+    "flags": []
+  },
+  {
+    "name": "PackAlignmentBoundary",
+    "switch": "Zp16",
+    "comment": "Sixteen Byte Boundary (/Zp16)",
+    "value": "5",
+    "flags": []
+  },
+  {
+    "name": "CallingConvention",
+    "switch": "",
+    "comment": "Default",
+    "value": "0",
+    "flags": []
+  },
+  {
+    "name": "CallingConvention",
+    "switch": "Gd",
+    "comment": "Use C-style Calling Convention (/Gd)",
+    "value": "1",
+    "flags": []
+  },
+  {
+    "name": "CallingConvention",
+    "switch": "Gz",
+    "comment": "Use stdcall Calling Convention (/Gz)",
+    "value": "2",
+    "flags": []
+  },
+  {
+    "name": "CallingConvention",
+    "switch": "Gc",
+    "comment": "Use Pascal Calling Convention (/Gc)",
+    "value": "3",
+    "flags": []
+  },
+  {
+    "name": "ErrorReporting",
+    "switch": "errorReport:prompt",
+    "comment": "Prompt to send report immediately (/errorReport:prompt)",
+    "value": "0",
+    "flags": []
+  },
+  {
+    "name": "ErrorReporting",
+    "switch": "errorReport:queue",
+    "comment": "Prompt to send report at the next logon (/errorReport:queue)",
+    "value": "1",
+    "flags": []
+  },
+  {
+    "name": "ErrorReporting",
+    "switch": "errorReport:send",
+    "comment": "Automatically send report (/errorReport:send)",
+    "value": "2",
+    "flags": []
+  },
+  {
+    "name": "ErrorReporting",
+    "switch": "errorReport:none",
+    "comment": "Do not send report (/errorReport:none)",
+    "value": "3",
+    "flags": []
+  },
+  {
+    "name": "NoLogo",
+    "switch": "nologo",
+    "comment": "Suppress Startup Banner",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "GeneratePreprocessedSourceListing",
+    "switch": "EP",
+    "comment": "Generate Preprocessed Source Listing",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "ListAllAvailableInformation",
+    "switch": "Sa",
+    "comment": "List All Available Information",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "UseSafeExceptionHandlers",
+    "switch": "safeseh",
+    "comment": "Use Safe Exception Handlers",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "AddFirstPassListing",
+    "switch": "Sf",
+    "comment": "Add First Pass Listing",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "EnableAssemblyGeneratedCodeListing",
+    "switch": "Sg",
+    "comment": "Enable Assembly Generated Code Listing",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "DisableSymbolTable",
+    "switch": "Sn",
+    "comment": "Disable Symbol Table",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "EnableFalseConditionalsInListing",
+    "switch": "Sx",
+    "comment": "Enable False Conditionals In Listing",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "TreatWarningsAsErrors",
+    "switch": "WX",
+    "comment": "Treat Warnings As Errors",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "MakeAllSymbolsPublic",
+    "switch": "Zf",
+    "comment": "Make All Symbols Public",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "GenerateDebugInformation",
+    "switch": "Zi",
+    "comment": "Generate Debug Information",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "EnableMASM51Compatibility",
+    "switch": "Zm",
+    "comment": "Enable MASM 5.1 Compatibility",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "PerformSyntaxCheckOnly",
+    "switch": "Zs",
+    "comment": "Perform Syntax Check Only",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "PreprocessorDefinitions",
+    "switch": "D\"[value]\"",
+    "comment": "Preprocessor Definitions",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "IncludePaths",
+    "switch": "I \"[value]\"",
+    "comment": "Include Paths",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "BrowseFile",
+    "switch": "FR\"[value]\"",
+    "comment": "Generate Browse Information File",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "ObjectFileName",
+    "switch": "Fo\"[value]\"",
+    "comment": "Object File Name",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "AssembledCodeListingFile",
+    "switch": "Fl\"[value]\"",
+    "comment": "Assembled Code Listing File",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  }
+]

+ 69 - 0
Templates/MSBuild/FlagTables/v14_RC.json

@@ -0,0 +1,69 @@
+[
+  {
+    "name": "IgnoreStandardIncludePath",
+    "switch": "X",
+    "comment": "Ignore Standard Include Paths",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "ShowProgress",
+    "switch": "v",
+    "comment": "Show Progress",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "SuppressStartupBanner",
+    "switch": "nologo",
+    "comment": "Suppress Startup Banner",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "NullTerminateStrings",
+    "switch": "n",
+    "comment": "Null Terminate Strings",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "PreprocessorDefinitions",
+    "switch": "D",
+    "comment": "Preprocessor Definitions",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "UndefinePreprocessorDefinitions",
+    "switch": "u",
+    "comment": "Undefine Preprocessor Definitions",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "AdditionalIncludeDirectories",
+    "switch": "I",
+    "comment": "Additional Include Directories",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "ResourceOutputFileName",
+    "switch": "fo",
+    "comment": "Resource File Name",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  }
+]