Asp.net mvc 是否可以调试Quartz.NET Windows服务?

Asp.net mvc 是否可以调试Quartz.NET Windows服务?,asp.net-mvc,quartz.net,Asp.net Mvc,Quartz.net,我在一个解决方案中有我的应用程序代码,在另一个解决方案中有Quartz.Net代码。我的应用程序代码连接到服务并注册作业,但在Quartz.NET解决方案中没有遇到断点,尽管Quartz.NET代码的Visual Studio实例已附加到服务进程。(出于兴趣,在我的应用程序中注册作业时,我可以进入Quartz.Net源代码。它会将源代码加载到我的应用程序的Visual Studio实例中。) 如果我从包含应用程序代码的Visual Studio实例将调试器附加到服务进程,则自定义作业源代码中的断

我在一个解决方案中有我的应用程序代码,在另一个解决方案中有Quartz.Net代码。我的应用程序代码连接到服务并注册作业,但在Quartz.NET解决方案中没有遇到断点,尽管Quartz.NET代码的Visual Studio实例已附加到服务进程。(出于兴趣,在我的应用程序中注册作业时,我可以进入Quartz.Net源代码。它会将源代码加载到我的应用程序的Visual Studio实例中。)

  • 如果我从包含应用程序代码的Visual Studio实例将调试器附加到服务进程,则自定义作业源代码中的断点表示符号尚未加载,因此不会中断。包含自定义作业的dll不在模块列表中

  • 有什么想法吗?我要做的是调试服务启动时加载的自定义作业。包含自定义作业的dll已复制到与Quartz.net bin目录相同的文件夹中,并且肯定加载正常,因为作业实际运行


    干杯,伊恩。

    你也复制了自定义作业.pdb文件了吗


    您还可以将生成目标更改为位于Quartz.Net文件夹中,无需保留复制文件。

    您也复制了自定义作业.pdb文件吗


    您还可以将生成目标更改为位于Quartz.Net文件夹中,无需保留复制文件。

    我这样做的方式是在作业开始时添加一些代码,如:

      if (System.Diagnostics.Debugger.IsAttached)
          System.Diagnostics.Debugger.Break(); 
    

    然后打开VisualStudio并将调试器附加到Quartz.Net服务。当作业开始时,它将进入调试器,然后我可以在其他位置添加断点。

    我这样做的方式是在作业开始时有一些代码,如:

      if (System.Diagnostics.Debugger.IsAttached)
          System.Diagnostics.Debugger.Break(); 
    

    然后打开VisualStudio并将调试器附加到Quartz.Net服务。当作业开始时,它将进入调试器,然后我可以在其他位置添加断点。

    我要做的是创建一个Asp.Net core控制台应用程序,并使用应用程序可执行文件使用
    sc
    创建一个Windows服务。下面是我的
    程序
    课程

    using Backup.Service.Extensions;
    using Microsoft.Extensions.DependencyInjection;
    using Microsoft.Extensions.Hosting;
    using System;
    using System.Diagnostics;
    using System.Linq;
    using System.Threading.Tasks;
    namespace Backup.Service
    {
        public class Program
        {
            static async Task Main(string[] args)
            {
                var isDebugging = !(Debugger.IsAttached || args.Contains("--console"));
                var hostBuilder = new HostBuilder()
                    .ConfigureServices((context, services) =>
                    {
                        services.AddHostedService<BackupService>();
                    });
                if (isDebugging)
                {
                    await hostBuilder.RunTheServiceAsync();
                }
                else
                {
                    await hostBuilder.RunConsoleAsync();
                }
            }
        }
    }
    
    使用Backup.Service.Extensions;
    使用Microsoft.Extensions.DependencyInjection;
    使用Microsoft.Extensions.Hosting;
    使用制度;
    使用系统诊断;
    使用System.Linq;
    使用System.Threading.Tasks;
    命名空间备份服务
    {
    公共课程
    {
    静态异步任务主(字符串[]args)
    {
    var isDebugging=!(Debugger.IsAttached | | args.Contains(“--console”);
    var hostBuilder=new hostBuilder()
    .ConfigureServices((上下文、服务)=>
    {
    services.AddHostedService();
    });
    如果(isDebugging)
    {
    等待hostBuilder.RunTheServiceAsync();
    }
    其他的
    {
    等待hostBuilder.RunConsoleAsync();
    }
    }
    }
    }
    
    如果我们在本地/调试运行应用程序,我们将调用扩展方法RunConsoleAsync(),否则我们将调用自己的自定义扩展方法runtheservicesync()


    我已经就这个话题写了一篇完整的文章,你可以阅读。您还可以在GitHub中看到完整的源代码。

    我要做的是创建一个Asp.Net核心控制台应用程序,并使用应用程序可执行文件使用
    sc
    创建一个Windows服务。下面是我的
    程序
    课程

    using Backup.Service.Extensions;
    using Microsoft.Extensions.DependencyInjection;
    using Microsoft.Extensions.Hosting;
    using System;
    using System.Diagnostics;
    using System.Linq;
    using System.Threading.Tasks;
    namespace Backup.Service
    {
        public class Program
        {
            static async Task Main(string[] args)
            {
                var isDebugging = !(Debugger.IsAttached || args.Contains("--console"));
                var hostBuilder = new HostBuilder()
                    .ConfigureServices((context, services) =>
                    {
                        services.AddHostedService<BackupService>();
                    });
                if (isDebugging)
                {
                    await hostBuilder.RunTheServiceAsync();
                }
                else
                {
                    await hostBuilder.RunConsoleAsync();
                }
            }
        }
    }
    
    使用Backup.Service.Extensions;
    使用Microsoft.Extensions.DependencyInjection;
    使用Microsoft.Extensions.Hosting;
    使用制度;
    使用系统诊断;
    使用System.Linq;
    使用System.Threading.Tasks;
    命名空间备份服务
    {
    公共课程
    {
    静态异步任务主(字符串[]args)
    {
    var isDebugging=!(Debugger.IsAttached | | args.Contains(“--console”);
    var hostBuilder=new hostBuilder()
    .ConfigureServices((上下文、服务)=>
    {
    services.AddHostedService();
    });
    如果(isDebugging)
    {
    等待hostBuilder.RunTheServiceAsync();
    }
    其他的
    {
    等待hostBuilder.RunConsoleAsync();
    }
    }
    }
    }
    
    如果我们在本地/调试运行应用程序,我们将调用扩展方法RunConsoleAsync(),否则我们将调用自己的自定义扩展方法runtheservicesync()


    我已经就这个话题写了一篇完整的文章,你可以阅读。您还可以在GitHub中看到完整的源代码。

    是的,我复制了自定义作业。pdb。是的,我复制了自定义作业。pdb。