我正在清理一个C# Visual Studio 2008解决方案,碰到了一个问题。我想在将代码放置在适当的版本控制下之前删除不必要的文件。在这样做时,我删除了现有的 .suo 文件和所有二进制工件,以获得一个干净的起点。但是,当我这样做时,我的程序无法通过 Microsoft.PointOfService 库访问连接的条形码扫描仪。我已经缩小了问题范围,发现问题出在 .suo 上。如果我保留原始的 .suo,我可以检索到连接的扫描仪列表。但是如果使用新的 .suo,则不能在 PosExplorer.GetDevices() 调用中看到连接的扫描仪。
对我来说,任何与 .suo 相关的事情影响程序行为并不清楚。该解决方案包含三个项目,其中两个被主应用程序引用。在测试中追踪此问题时,我发现这两个项目的引用有时会在干净的 .suo 中断,并且必须重新建立。尽管它们与扫描仪无关。我还必须重新启用顶层项目的调试生成配置。
有什么想法吗?如果可能的话,我不想检查旧版的 .suo。
更新
当使用功能性的旧版 .suo 时,我注意到会加载其他扫描仪驱动程序 DLL(HHSO4NET.dll)。更改后的 VS 输出窗口部分列在下面。
旧版 .suo 输出窗口:
'foo.vshost.exe' (Managed): Loaded 'C:\Program Files (x86)\Honeywell\UPOS Suite\POS4NET Suite\POS for NET\bin\HHSO4NET.dll'
'foo.vshost.exe' (Managed): Loaded 'C:\Windows\assembly\GAC_MSIL\Microsoft.PointOfService.ControlBase\1.12.0.0__31bf3856ad364e35\Microsoft.PointOfService.ControlBase.dll'
'foo.vshost.exe' (Managed): Loaded 'C:\Program Files (x86)\Microsoft Point Of Service\SDK\Samples\Simulator Service Objects\Microsoft.PointOfService.DeviceSimulators.dll'
'foo.vshost.exe' (Managed): Loaded 'C:\Program Files (x86)\Microsoft Point Of Service\SDK\Samples\Example Service Objects\Microsoft.PointOfService.ExampleServiceObjects.dll'
'foo.vshost.exe' (Managed): Loaded 'C:\Program Files (x86)\Honeywell\UPOS Suite\POS4NET Suite\POS for NET\bin\HHSO4NET.dll'
'foo.vshost.exe' (Managed): Loaded 'C:\Windows\assembly\GAC_MSIL\Microsoft.PointOfService.ControlBase\1.12.0.0__31bf3856ad364e35\Microsoft.PointOfService.ControlBase.dll'
清理 .suo 输出窗口:
'foo.vshost.exe' (Managed): Loaded 'C:\Program Files (x86)\Microsoft Point Of Service\SDK\Samples\Simulator Service Objects\Microsoft.PointOfService.DeviceSimulators.dll'
'foo.vshost.exe' (Managed): Loaded 'C:\Windows\assembly\GAC_MSIL\Microsoft.PointOfService.ControlBase\1.12.0.0__31bf3856ad364e35\Microsoft.PointOfService.ControlBase.dll'
'foo.vshost.exe' (Managed): Loaded 'C:\Program Files (x86)\Microsoft Point Of Service\SDK\Samples\Example Service Objects\Microsoft.PointOfService.ExampleServiceObjects.dll'
更新2
我通过卸载之前安装的程序发布版本(来自VS部署项目的msi安装程序)复现了使用遗留.suo出现的问题。似乎在使用旧版.suo进行构建时,会捕获安装程序创建的对HHOS4NET.DLL的注册表引用,而不是新鲜构建。有任何想法从哪里寻找罪魁祸首吗?
更新3
似乎工作应用程序的卸载是一个红色干鱼。它擦除了扫描仪驱动程序依赖的Configuration.xml
文件,以查看扫描仪(PnP?没错)。这仍然让我拥有一个神秘的魔术.suo。我尝试使用简单的C#控制台应用程序枚举连接的POS设备,但这并没有起作用,所以MS的POSfor.NET框架或Honeywell的驱动程序肯定出了问题。他们确实很烂。
值得记录的是,“好”的.suo中没有特殊的调试设置。我从中提取了字符串,但没有什么特别的地方。接下来,我将尝试将其放入控制台应用程序中,以查看它是否在不相关的解决方案中保留其神奇属性。