Visual Studio 无法使用“附加到进程”调试我的Windows服务

xpcnnkqh  于 2023-10-23  发布在  Windows
关注(0)|答案(1)|浏览(412)

我正在尝试调试我编写的Windows服务,方法是将其安装为服务,然后使用Visual Studio 2022(版本17.6.4)中的“附加到进程”功能。
下面是我的Program.cs的代码:

  1. var builder = Host.CreateDefaultBuilder(args)
  2. .UseWindowsService(options =>
  3. {
  4. options.ServiceName = "Example Service";
  5. })
  6. .ConfigureServices((context, services) =>
  7. {
  8. services.AddSingleton<MyService>();
  9. services.AddHostedService<WindowsBackgroundService>();
  10. });
  11. IHost host = builder.Build();
  12. host.Run();

下面是WindowsBackgroundService类中的ExecuteAsync函数(应该在host.Run()之后执行):

  1. protected override async Task ExecuteAsync(CancellationToken stoppingToken)
  2. {
  3. Thread.Sleep(150000);
  4. var exampleString = "exampleString"; //breakpoint HERE
  5. }

我使用这些选项发布了Windows服务:

我正确安装了服务。
下面是我附加过程的操作:
1.我启动windows服务
1.在Visual Studio中,我从“进程”中选择了“进程”,然后选择了“附加到进程”。
1.从“可用进程”中,我选择我的Windows服务(一旦服务运行,我可以很容易地找到它),然后单击“附加”。
1.我等待断点(在代码中查找注解)到达。
第四步是出错的地方。在我执行步骤1-3几秒钟后,我得到这些错误:

沿着此异常消息:

  1. Unhandled exception at 0x00007FF83E76CF19 (KernelBase.dll) in ExampleService.exe: 0xE0434352 (parameters: 0xFFFFFFFF80131534, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0x00007FF737E70000).

如何解决这个问题?

gev0vcfq

gev0vcfq1#

就在我发表这篇文章之后,我记得我在微软的教程中读过这篇文章。显然,如果我想用我的方法调试东西,我不能使用单个文件。
所以,我所要做的就是解决这个问题,在配置文件设置中取消勾选“产生单个文件”。它现在按预期工作。
以下是新的配置文件设置,以清晰起见:

相关问题