Visual Studio 2008 devenv运行应用程序,然后留下鬼

时间:2010-01-12 18:45:09

标签: visual-studio visual-studio-2008 devenv

我正在使用Visual Studio开发一个C#/ WPF应用程序。此应用程序使用com端口,然后在退出时释放它。我正在使用调试器经常运行和停止此应用程序。有时,在启动调试会话时,我得到一个异常,说com端口已经在使用中。

代码总是在退出时关闭打开的com端口,所以我运行了portmon以查看谁正在抓住该端口。事实证明,在“正常”情况下,我的应用程序(portmon中的Process KaleidoscopeApp)会抓取,使用和关闭端口。在未释放端口的情况下,端口正由进程“devenv”使用,这是Visual Studio本身。

为什么devenv在这些情况下是com端口的所有者?当我关闭应用程序时,它为什么继续持有它?只有当我关闭Visual Studio时才会释放端口。这是一种奇怪的行为,特别是因为调试器已在Visual Studio中专门停止。

这是来自portmon的捕获,显示对com端口的访问。您可以看到典型的会话以IRP_MJ_CREATE开头,并以IRP_MJ_CLOSE结束。 KaleidoscopeApp始终如此。您可以看到最后一位由devenv运行。然而,每次启动都始终在VS调试器中。


  

357 0.11112275 KaleidoscopeApp IRP_MJ_CREATE Serial4 SUCCESS选项:   打开
  358 0.00000305 KaleidoscopeApp IOCTL_SERIAL_GET_PROPERTIES Serial4 SUCCESS
  ...

     

406 0.02997366 KaleidoscopeApp IRP_MJ_CLEANUP Serial4 SUCCESS
  407 0.03390231 KaleidoscopeApp IRP_MJ_CLOSE Serial4 SUCCESS
  408 0.11443431 KaleidoscopeApp IRP_MJ_CREATE Serial4 SUCCESS选项:   打开
  409 0.00000727 KaleidoscopeApp IOCTL_SERIAL_GET_PROPERTIES Serial4 SUCCESS
  ...

     

457 0.02995160 KaleidoscopeApp IRP_MJ_CLEANUP Serial4 SUCCESS
  458 0.03389956 KaleidoscopeApp IRP_MJ_CLOSE Serial4 SUCCESS
  459 0.11307261 devenv.exe IRP_MJ_CREATE Serial4 SUCCESS选项:   打开
  460 0.00000185 devenv.exe IOCTL_SERIAL_GET_PROPERTIES Serial4 SUCCESS
  ...

     

501 35.55274341 devenv.exe IOCTL_SERIAL_WAIT_ON_MASK Serial4 CANCELED


任何见解都将受到赞赏!

1 个答案:

答案 0 :(得分:1)

在VS2008和VS2010的最后几周,我遇到了完全相同的问题。解决此问题的一种方法是从解决方案文件夹中删除.suo文件。

VS为什么这样做,以及为什么它存储在.suo文件中?我不知道......