Я очищаю решение С# Visual Studio 2008 и сталкиваюсь с проблемой. Я пытаюсь удалить ненужные файлы при подготовке к правильному контролю кода. При этом я удалил существующий файл .suo и все двоичные артефакты, чтобы получить чистый старт. Когда я это делаю, моя программа не может получить доступ к подключенному сканеру штрих-кода через библиотеку Microsoft.PointOfService
. Я сузил проблему до чего-то в .suo. Если я сохраню исходный .suo, я могу получить список подключенных сканеров. С новым, подключенный сканер не отображается в вызове PosExplorer.GetDevices()
.
Мне непонятно, почему все, что связано с .suo, повлияло бы на поведение программы. Решение содержит три проекта, два из которых ссылаются на основное приложение. Отслеживая эту проблему при тестировании, я обнаружил, что ссылки на эти два проекта иногда ломаются с чистым .suo и должны быть восстановлены. Однако они не имеют никакого отношения к сканеру. Я также должен повторно установить конфигурацию сборки отладки для проекта верхнего уровня.
Любые идеи? Я бы предпочел не проверять наследие .suo, если я могу избежать этого.
Обновление
Я заметил, что дополнительные DLL файлы драйвера сканера (HHSO4NET.dll) загружаются, когда используется функциональное наследие .suo. Измененные части окна вывода 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
Я воспроизвел проблему с устаревшим .suo, удалив ранее установленную версию версии программы (установщик MSI из проекта развертывания VS). Казалось бы, ссылка на реестр HHOS4NET.DLL, созданная установщиком, подбирается, когда сборка выполняется с помощью legacy.suo, а не с новой. Любые идеи, где искать виновника?
Обновление 3
Кажется, что удаление рабочего приложения было немного красной селедки. Он уничтожил файл Configuration.xml
, от которого зависит драйвер сканера, чтобы увидеть сканер (PnP? Да, правильно). Это все еще оставляет меня с таинственной магией. Я попытался перечислить подключенные POS-устройства с помощью простого консольного приложения С#, и это не сработало, поэтому что-то определенно связано с инфраструктурой MS POSfor.NET или с драйвером Honeywell. Они действительно являются POS.
Для записи нет специальных настроек отладки в известном "хорошем".suo. Я извлек из него струны, и ничего не выделялось. Затем я попытаюсь использовать его в консольном приложении, чтобы узнать, сохраняет ли он свои магические свойства в несвязанном решении.