Visual Studio SUO文件破解应用程序

时间:2014-05-02 16:27:23

标签: c# visual-studio

我正在清理C#Visual Studio 2008解决方案,并遇到了麻烦。我正在尝试删除不必要的文件,以准备将代码置于适当的版本控制之下。在这样做时,我删除了现有的.suo文件和所有二进制工件,以获得干净的开始。当我这样做时,我的程序无法通过Microsoft.PointOfService库访问连接的条形码扫描仪。我已经将问题缩小到.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的问题。看起来,当使用legacy.suo完成构建而不是新构建时,将获取由安装程序创建的HHOS4NET.DLL的注册表引用。任何寻找罪魁祸首的想法?

更新3

似乎卸载工作应用程序有点像红鲱鱼。它清除了扫描仪驱动程序所依赖的Configuration.xml文件以查看扫描仪(PnP?是的,是的)。这仍然让我有一种神秘的魔力。我尝试使用一个简单的C#控制台应用程序枚举连接的POS设备,但这样做不起作用,所以某些东西肯定会出现在MS的POSfor.NET框架或霍尼韦尔的驱动程序中。他们真的是一个POS。

对于记录,已知的“good”.suo中没有特殊的调试设置。我从中提取了字符串,没有什么突出的。接下来,我将尝试将其插入控制台应用程序,以查看它是否在不相关的解决方案中保留其神奇属性。

1 个答案:

答案 0 :(得分:0)

检查SUO是否针对特定位数。有时你必须明确。继续输出时,无法加载时会出现问题

Program Files (x86)\Honeywell\UPOS Suite\POS4NET Suite\POS for NET\bin\HHSO4NET.dll

错误的位数可能会破坏加载路径和名称解析。你是否在魔法SUO中定义了其他任何路径?我可以把它的副本分析出去吗?