Visual Studio调试器启动应用程序与手动启动有不同的结果

时间:2014-01-05 19:30:49

标签: c# visual-studio debugging visual-studio-2012

在调试模式下从Visual Studio 2012启动程序时(使用“播放”按钮),我的应用程序在某行代码中失败。为了具体起见,我收到的错误是:

  

方法Open引发异常。无法创建服务对象实例,或无法获取其IDispatch接口。

但是,当我通过单击文件名启动EXE来运行应用程序时,我不会遇到此错误。

另外有趣的是,我可以将以下语句添加到我的代码中(导致调试器在启动后附加)并且我没有收到上面提到的异常。

if(!Debugger.IsAttached) {
    Debugger.Launch();
}

因此,简而言之:当Visual Studio启动我的程序时,有关进程权限/权限,应用程序域或其他正在改变其“正常”操作能力的因素的不同之处。我知道从Visual Studio启动时我的应用程序的父进程是 devenv.exe 进程,这可能与它有什么关系吗?

我做过的一些故障排除:

  • 我已禁用Visual Studio托管流程,以消除潜在问题。
  • 我在Sys Internals的Process Explorer中列出了上面列出的每个不同测试场景中的过程。我已经比较了启动应用程序的权限,会话,用户名以及许多其他事情,试图找出应用程序运行方式不同的原因。所有比较都与父进程的情况相同(手动启动时 explorer.exe ,通过Visual Studio启动时 devenv.exe

有什么想法吗?

更新

我做了另一个测试并选择了调试 - >启动时无需调试,这不会产生指定的错误,但仍然启动程序,其父进程为 devenv.exe ,排除了这可能是一个潜在的问题。所以它与从程序开始时附加的调试器有关。

0 个答案:

没有答案