Зачем тебе это нужно? Если вы используете интерфейс для доступа к сканеру, то одна реализация будет ссылаться на один SDK, а другая реализация будет ссылаться на другой SDK.
Во время выполнения класс, который вы на самом деле создаете, попытается загрузить ссылочную сборку, и, если вы обнаружите оборудование перед его созданием, будет загружена соответствующая ссылка SDK. В основном, если вы не используете SDK, который отсутствует, он никогда не будет пытаться загрузить его.
Единственная причина, по которой это может быть проблемой, заключается в том, что два SDK используют одинаковые имена классов. В этом случае я все равно буду использовать интерфейс на его основе, но для каждой реализации интерфейса буду иметь разные библиотеки DLL, и эти проекты будут ссылаться на свой надлежащий SDK.