DebugRunner 1.2.0
dotnet add package DebugRunner --version 1.2.0
NuGet\Install-Package DebugRunner -Version 1.2.0
<PackageReference Include="DebugRunner" Version="1.2.0" />
<PackageVersion Include="DebugRunner" Version="1.2.0" />
<PackageReference Include="DebugRunner" />
paket add DebugRunner --version 1.2.0
#r "nuget: DebugRunner, 1.2.0"
#:package DebugRunner@1.2.0
#addin nuget:?package=DebugRunner&version=1.2.0
#tool nuget:?package=DebugRunner&version=1.2.0
DebugRunner
Librería que se instala en el proceso que se va a depurar para ejecutar métodos
manualmente durante una sesión de depuración, resolviendo las dependencias desde
el IServiceProvider real de la aplicación (misma base de datos, mismo
appsettings.json, mismo scope de ejecución).
La extensión de Visual Studio "Run Method Manually" se comunica con esta librería de dos formas:
- Canal por archivos (≥ 1.1.0, preferido):
Initializearranca un listener que vigila%TEMP%\DebugRunner\{pid}\cmd-*.json. La extensión escribe ahí el comando y el runner lo ejecuta en un hilo propio del proceso (thread pool), sin detener la aplicación y sin evaluación de expresiones del debugger. Los breakpoints dentro del método se detienen con normalidad. - Evaluación de expresiones (fallback, < 1.1.0): la extensión evalúa
DebugRunner.Runner.Run(...)víadte.Debugger.GetExpressioncon el debugger en break mode.
En ambos casos todo el trabajo de DI ocurre dentro del proceso vivo.
Instalación
dotnet add package DebugRunner
Integración
Agrega una línea en tu Program.cs, después de builder.Build():
#if DEBUG
DebugRunner.Runner.Initialize(app.Services);
#endif
Uso
La extensión evalúa expresiones como estas dentro del proceso depurado:
DebugRunner.Runner.Run("MiApp.Services.UsuariosService", "ObtenerPorId", new string[] { "5", null })
DebugRunner.Runner.RunJob("MiApp.Jobs.ReporteJob", "{\"nombre\":\"x\"}")
Ambos métodos devuelven siempre un string JSON estructurado (nunca lanzan
excepciones): { "success": true, "result": ..., "resultType": "..." } o
{ "success": false, "exceptionType": "...", "message": "...", "stackTrace": "..." }.
- Los argumentos van en JSON: primitivos crudos (
123,true), strings/Guid/ DateTime/enums como JSON string ("abc","Monday"), objetos complejos como JSON. LosCancellationTokense pasan siempre comoNoney los parámetros opcionales omitidos usan su valor por defecto. - Si el tipo no está registrado en DI, se crea con
ActivatorUtilities. - Los métodos
Task/Task<T>/ValueTask/ValueTask<T>se desenvuelven automáticamente. RunJobdispara jobs de Quartz.NET por reflexión (sin referenciar Quartz).
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net5.0 was computed. net5.0-windows was computed. net6.0 is compatible. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 is compatible. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
| .NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
| .NET Standard | netstandard2.0 is compatible. netstandard2.1 was computed. |
| .NET Framework | net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
| MonoAndroid | monoandroid was computed. |
| MonoMac | monomac was computed. |
| MonoTouch | monotouch was computed. |
| Tizen | tizen40 was computed. tizen60 was computed. |
| Xamarin.iOS | xamarinios was computed. |
| Xamarin.Mac | xamarinmac was computed. |
| Xamarin.TVOS | xamarintvos was computed. |
| Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETStandard 2.0
- Microsoft.Extensions.DependencyInjection (>= 8.0.1)
- System.Text.Json (>= 8.0.5)
-
net10.0
- Microsoft.Extensions.DependencyInjection (>= 8.0.1)
-
net6.0
- Microsoft.Extensions.DependencyInjection (>= 8.0.1)
- System.Text.Json (>= 8.0.5)
-
net8.0
- Microsoft.Extensions.DependencyInjection (>= 8.0.1)
-
net9.0
- Microsoft.Extensions.DependencyInjection (>= 8.0.1)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 1.2.0 | 116 | 8/22/2026 |