我正在清理C#Visual Studio 2008解决方案,并且遇到了麻烦。我正在尝试删除不必要的文件,以准备将代码置于适当的修订控制下。为此,我删除了现有的.suo文件和所有二进制工件,从而获得了一个全新的起点。执行此操作时,我的程序无法通过Microsoft.PointOfService
库访问连接的条形码扫描仪。我已将问题缩小为.suo中的内容。如果保留原始的.suo,则可以检索连接的扫描仪列表。有了新的扫描器,连接的扫描器不会出现在对PosExplorer.GetDevices()
的调用中。
我不清楚为什么与.suo相关的任何内容都会影响程序的行为。该解决方案包含三个项目,其中两个由主应用程序引用。在测试中跟踪此问题时,我发现对这两个项目的引用有时会与干净的.suo断开,因此必须重新建立。他们与扫描仪无关。我还必须重新启用顶层项目的调试构建配置。
有任何想法吗?如果可以避免的话,我宁愿不必 checkin 旧版.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的问题。似乎在对legacy.suo(而不是全新的)进行构建时,会获得对安装程序创建的HHOS4NET.DLL的注册表引用。有什么想法可以找到罪魁祸首吗?
更新3
似乎正在工作的应用程序的卸载有点让人头疼。它清除了扫描仪驱动程序用来查看扫描仪所依赖的
Configuration.xml
文件(PnP?是的)。那仍然给我留下了神秘的魔力。我尝试使用一个简单的C#控制台应用程序枚举连接的POS设备,但该方法无法正常工作,因此MS的POSfor.NET框架或Honeywell的驱动程序肯定没有任何用处。他们确实是POS。作为记录,已知的“good” .suo中没有特殊的调试设置。我从中提取了琴弦,没有什么脱颖而出的。接下来,我将尝试将其放到控制台应用程序中,以查看它是否在无关的解决方案中保留了其神奇的属性。
最佳答案
检查SUO是否以特定位数为目标。有时您必须明确。继续输出时,如果加载失败,故障就开始了
Program Files (x86)\Honeywell\UPOS Suite\POS4NET Suite\POS for NET\bin\HHSO4NET.dll
错误的位会弄乱加载路径和名称解析。您是否在魔术SUO中定义了其他任何路径?我可以复印一份吗?