﻿<?xml version="1.0" encoding="utf-8"?>
<!--Copyright, Microsoft Corporation, All rights reserved.-->
<Rule Name="WindowsRemoteDebugger"
      DisplayName="Remote Windows Debugger"
      PageTemplate="debugger"
      Description="Remote Windows Debugger options"
      xmlns="http://schemas.microsoft.com/build/2009/properties">
  <Rule.DataSource>
    <DataSource Persistence="UserFile" />
  </Rule.DataSource>
  <StringProperty Name="RemoteDebuggerCommand" DisplayName="Remote Command"
                Description="The debug command to execute." 
                F1Keyword="VC.Project.IVCRemoteDebugPageObject.RemoteCommand"/>
  <StringProperty Name="RemoteDebuggerCommandArguments" DisplayName="Remote Command Arguments"
                Description="The command line arguments to pass to the application."
                F1Keyword="VC.Project.IVCRemoteDebugPageObject.CommandArguments">
    <Argument Property="RemoteDebuggerCommand" />
  </StringProperty>
  <StringProperty Name="RemoteDebuggerWorkingDirectory" DisplayName="Working Directory"
                Description="The application's working directory. By default, the directory containing the project file."
                Subtype="folder" 
                F1Keyword="VC.Project.IVCRemoteDebugPageObject.WorkingDirectory"/>
  <StringProperty Name="RemoteDebuggerServerName" DisplayName="Remote Server Name"
                Description="Specifies a remote server name."
                F1Keyword="VC.Project.IVCRemoteDebugPageObject.RemoteMachine"/>
  <EnumProperty Name="RemoteDebuggerConnection" DisplayName="Connection"
                Description="Specifies the connection type."
                F1Keyword="VC.Project.IVCRemoteDebugPageObject.Remote">
    <EnumValue Name="RemoteWithAuthentication" DisplayName="Remote with Windows authentication"
               Description="Remote with Windows authentication" />
    <EnumValue Name="RemoteWithoutAuthentication" DisplayName="Remote with no authentication"
               Description="Remote with no authentication" />
  </EnumProperty>
  <EnumProperty Name="RemoteDebuggerDebuggerType" DisplayName="Debugger Type"
                Description="Specifies the debugger type to use. When set to Auto, the debugger type will be selected based on contents of the exe file."
                F1Keyword="VC.Project.IVCRemoteDebugPageObject.DebuggerType">
    <EnumProperty.Metadata>
      <NameValuePair Name="IsDebugType" Value="true"/>
    </EnumProperty.Metadata>
    <EnumValue Name="NativeOnly" DisplayName="Native Only" />
    <EnumValue Name="ManagedOnly" DisplayName="Managed Only (.NET Framework)" />
    <EnumValue Name="Mixed" DisplayName="Mixed (.NET Framework)" />
    <EnumValue Name="ManagedCore" DisplayName="Managed Only (.NET Core)"/>
    <EnumValue Name="NativeWithManagedCore" DisplayName="Mixed (.NET Core)" />
    <EnumValue Name="Auto" DisplayName="Auto" />
    <EnumValue Name="Script" DisplayName="Script" />
    <EnumValue Name="GPUOnly" DisplayName="GPU Only (C++ AMP)"  />
    <EnumValue Name="JavaScriptForWebView2" DisplayName="JavaScript (WebView2)" />
  </EnumProperty>
  <StringListProperty Name="RemoteDebuggerEnvironment" DisplayName="Environment"
                      Description="Specifies the environment for the debugee, or variables to merge with existing environment."
                      Separator="&#xA;"
                      F1Keyword="VC.Project.IVCRemoteDebugPageObject.Environment"/>
  <DynamicEnumProperty Name="RemoteGPUDebuggerTargetType"
                       DisplayName="Debugging Accelerator Type"
                       Category="GPUOptions"
                       EnumProvider="GPUTargets"
                       F1Keyword="VC.Project.IVCRemoteDebugPageObject.GPUDebuggerTargetType"
                       Description="The debugging accelerator type to use for debugging the GPU code.  (Available when the GPU debugger is active.)">
    <DynamicEnumProperty.Metadata>
      <NameValuePair Name="ParentPropertyName" Value="RemoteDebuggerDebuggerType"/>
      <NameValuePair Name="ParentPropertyValue" Value="GPUOnly"/>
    </DynamicEnumProperty.Metadata>
  </DynamicEnumProperty>
  <EnumProperty Name="GPURefDebuggerBreakOnAllThreads"
                DisplayName="GPU Default Breakpoint Behavior"
                Category="GPUOptions"
                Description="Sets how often the GPU debugger breaks."
                F1Keyword="VC.Project.IVCRemoteDebugPageObject.GPUBreakOnAllThreads">
    <EnumValue Name="GPURefBreakOncePerWarp" DisplayName="Break once per warp"
               Description="Break once per warp" />
    <EnumValue Name="GPURefBreakForCPUThread" DisplayName="Break for every thread (like CPU behavior)"
               Description="Break for every thread (like CPU behavior)" />
    <EnumProperty.Metadata>
      <NameValuePair Name="ParentPropertyName" Value="RemoteDebuggerDebuggerType"/>
      <NameValuePair Name="ParentPropertyValue" Value="GPUOnly"/>
    </EnumProperty.Metadata>
  </EnumProperty>
  <BoolProperty Name="RemoteDebuggerAttach" DisplayName="Attach"
                Description="Specifies whether the debugger should attempt to attach to an existing process when debugging starts."
                F1Keyword="VC.Project.IVCRemoteDebugPageObject.Attach"/>
  <BoolProperty Name="RemoteDebuggerSQLDebugging" DisplayName="SQL Debugging"
                Description="Attach the SQL debugger."
                F1Keyword="VC.Project.IVCRemoteDebugPageObject.SQLDebugging"/>
  <StringProperty Name="DeploymentDirectory" DisplayName="Deployment Directory"
                Description="When debugging on a remote machine, if you want the contents of the project output (except for PDB files) to be copied to the remote machine, specify the path here"
                F1Keyword="VC.Project.IVCRemoteDebugPageObject.DeploymentDirectory"/>
  <StringProperty Name="AdditionalFiles" DisplayName="Additional Files to Deploy"
                Description="When debugging on a remote machine, files and directories specified here (besides the project output) are copied to the Deployment Directory if one was specified."
                Subtype="file"
                F1Keyword="VC.Project.IVCRemoteDebugPageObject.AdditionalFiles"/>
  <BoolProperty Name="RemoteDebuggerDeployDebugCppRuntime" DisplayName="Deploy Visual C++ Debug Runtime Libraries"
                Description="Specifies whether to deploy the debug runtime libraries for the active platform."
                F1Keyword="VC.Project.IVCRemoteDebugPageObject.Remote"/>
  <BoolProperty Name="RemoteDebuggerDeployCppRuntime" DisplayName="Deploy Visual C++ Runtime Libraries"
                Description="Specifies whether to deploy the runtime libraries for the active platform."
                F1Keyword="VC.Project.IVCRemoteDebugPageObject.Remote"/>
  <BoolProperty Name="UseLegacyManagedDebugger" Visible="false" />
	<DynamicEnumProperty Name="RemoteDebuggerAmpDefaultAccelerator"
						 DisplayName="Amp Default Accelerator"
						 EnumProvider="AmpAccelerators"
						 F1Keyword="VC.Project.IVCRemoteDebugPageObject.AmpDefaultAccelerator"
						 Description="Override C++ AMP's default accelerator selection. Property does not apply when debugging managed code.">
	</DynamicEnumProperty>
</Rule>
