`DebuggerTypeProxy` generates an invalid expression when runtime and static types differ

Abierto
#9,108 0 comentarios 0 reacciones 0 asignados Ver en GitHub

Los mantenedores suelen responder en 1 día

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
4/5
Tiempo estimado
3-5 días
Aptitud para principiantes
45/100
Tipo de issue
Error
Claridad
Bastante claro
Estado de actividad
Tranquilo
Stack tecnológico
csharp, typescript, vscode
Área
devtools

Línea de trabajo

Ejecuta la reproducción de C# proporcionada en VS Code e inspecciona las rutas del depurador utilizadas por Copy Value y Copy as Expression para un DebuggerTypeProxy cuyos tipos en tiempo de ejecución y estático difieren. Se considera completado cuando Copy Value devuelve Value y Copy as Expression incluye la conversión requerida a Derived en la expresión DebugProxy generada.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

Bug Debugger Debugger-ExpressionEvaluation

Type: Bug

Issue Description

When expression runtime type is different from its static type, and runtime type define DebuggerTypeProxy, then that proxy displayed in Locals view, but interacting with proxies' properties (Copy Value, Copy as Expression) produce incorrect result.

Steps to Reproduce

using System.Diagnostics;

namespace Test;

public static class Program
{
	public static void Main()
	{
		Base v = new Derived();
	} // breakpoint here
}

public class Base { }

[DebuggerTypeProxy(typeof(DebugProxy))]
public class Derived : Base { }

public class DebugProxy(Derived instance)
{
	public string Property => "Value";
}
Image

Expected Behavior

Copy Value should copy Value.
Copy as Expression should copy new Test.DebugProxy((Derived)v).Property.

Actual Behavior

Copy Value copy error CS1503: Argument 1: cannot convert from 'Test.Base' to 'Test.Derived'.
Copy as Expression copy new Test.DebugProxy(v).Property.

Extension version: 2.130.5
VS Code version: Code 1.113.0 (cfbea10c5ffb233ea9177d34726e6056e89913dc, 2026-03-24T15:07:18+01:00)
OS version: Windows_NT x64 10.0.28000
Modes:

Environment Information

VSCode version: 1.113.0
C# Extension: 2.130.5
Using OmniSharp: false

Dotnet Information
.NET SDK:
 Version:           10.0.201
 Commit:            4d3023de60
 Workload version:  10.0.200-manifests.0793c108
 MSBuild version:   18.3.0-release-26153-122+4d3023de6

Runtime Environment:
 OS Name:     Windows
 OS Version:  10.0.28000
 OS Platform: Windows
 RID:         win-x64
 Base Path:   C:\Program Files\dotnet\sdk\10.0.201\

.NET workloads installed:
There are no installed workloads to display.
Configured to use workload sets when installing new manifests.
No workload sets are installed. Run "dotnet workload restore" to install a workload set.

Host:
  Version:      10.0.5
  Architecture: x64
  Commit:       a612c2a105

.NET SDKs installed:
  10.0.201 [C:\Program Files\dotnet\sdk]

.NET runtimes installed:
  Microsoft.AspNetCore.App 10.0.5 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
  Microsoft.NETCore.App 10.0.5 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
  Microsoft.WindowsDesktop.App 10.0.5 [C:\Program Files\dotnet\shared\Microsoft.WindowsDesktop.App]

Other architectures found:
  None

Environment variables:
  Not set

global.json file:
  Not found
Visual Studio Code Extensions
Extension Author Version Folder Name
csharp ms-dotnettools 2.130.5 ms-dotnettools.csharp-2.130.5
vscode-dotnet-runtime ms-dotnettools 3.0.0 ms-dotnettools.vscode-dotnet-runtime-3.0.0
C# Settings
Setting Value
preferCSharpExtension false
compilerDiagnosticScope openFiles
analyzerDiagnosticScope openFiles
enableXamlTools true
useServerGC true
Lenguaje dominante
TypeScript
Estrellas
3.1k
Forks
742
Merge medio
1 d 3 h
PR fusionados (30 d)
53

Preparar el entorno

Abrir en Codespaces

Inicia el contenedor de desarrollo del proyecto en tu navegador, con tu propia cuenta de GitHub.

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de dotnet/vscode-csharp

Todos los issues de dotnet/vscode-csharp

Issues similares

Más issues de TypeScript

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.