c# - Visual Studio SUO 文件破解应用程序

标签 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 框架或 Honeywell 的驱动程序肯定有问题。它们确实是一个 POS。

郑重声明,在已知的“好”.suo 中没有特殊的调试设置。我从中提取了字符串,但没有什么特别之处。接下来,我将尝试将它放入控制台应用程序,看看它是否在不相关的解决方案中保留了它的神奇属性。

最佳答案

检查 SUO 是否针对特定位数。有时你必须明确。继续你的输出,当它无法加载时,问题就开始了

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

错误的位数会扰乱加载路径和名称解析。你有没有在神奇的 SUO 中定义任何其他路径?我可以拿一份它来剖析吗?

关于c# - Visual Studio SUO 文件破解应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23432793/

相关文章:

c# - 按 Entity Framework 中的子表排序

C# 匹配不同列表中的项目

c# - Visual Studio 包 : Settings the visibility of a custom Solution Explorer context menu item

c - GCC 编译器允许结构转换,但 Visual Studio 不允许

c++ - RC 文件更改会默默失败; "Cannot open the resource file for edit"

c# - C#计算两个多边形交点的简单方法

c# - 在 Windows XP 中使用 C# 在登录屏幕上显示窗口

c++ - 在 Visual Studio 中的同一解决方案中构建 C 项目以调用 C++ 库中的函数

c++ - VisualStudio *.obj 文件大小(513Mb objs 和 534Mb lib)

visual-studio - Resharper 的替代品