У меня есть настольное приложение C #, которое ссылается на COM-объект Microsoft OLE DB Service Component 1.0 Type Library
. Это диалоговое окно, которое позволяет пользователю создавать и тестировать строку подключения. Код работал, как и ожидалось, в течение нескольких лет.
![MSDASC Data Link Properties editor](https://i.stack.imgur.com/0KpuS.png)
Я обнаружил, что когда выполняется "Перестройка", появляется 18 не перечисленных предупреждений. Я считаю, что это означает, что предупреждения создаются при импорте библиотеки типов.
Все они являются формами:
Processing COM reference "MSDASC" from path "C:\Program Files (x86)\Common Files\System\Ole DB\oledb32.dll". The type library importer could not convert the signature for the member 'tagDBPROPIDSET.rgPropertyIDs'.
Processing COM reference "MSDASC" from path "C:\Program Files (x86)\Common Files\System\Ole DB\oledb32.dll". At least one of the arguments for 'DataLinks.RemoteCreateDBInstanceEx' cannot be marshaled by the runtime marshaler. Such arguments will therefore be passed as a pointer and may require unsafe code to manipulate.
Разобравшись с этим, я обнаружил, что простое добавление ссылки на пустой проект WinForms вызовет предупреждения. Не требуется код для доступа к библиотеке MSDASC.
В качестве обходного пути я скопировал Interop.MSDASC.dll
из дерева OBJ, сгенерированного во время перестройки, и скопировал его в папку проекта. Я удалил ссылку на MSDASC
и добавил ее к Interop.MSDASC.dll
в моем проекте.
Теперь, когда я перестраиваюсь, я не вижу предупреждений. Я удалил Interop.MSDASC.dll
из дерева OBJ, и он воссоздан.
Это просто замаскировало мою проблему? Есть ли лучший способ использовать диалог и подавить или ответить на предупреждения?
Обновление:
Это происходит в VS 2017 и 2019, но я верю, что это произошло и в предыдущих версиях.
Добавлено изображение окна списка ошибок:
![enter image description here](https://i.stack.imgur.com/BCDcx.png)