Как правильно импортировать библиотеку типов в Visual Studio?

Фон

Наша сборка использует ant и пользовательскую задачу для создания проектов / решений Visual Studio, а также некоторых Java-проектов. Структура в основном представляет собой большое дерево, и артефакты из проектов обычно копируются вверх в общий каталог сборки.

Раньше это был полный беспорядок, и я значительно упростил ant-скрипты, и теперь я в основном прохожу через проекты / решения Visual Studio. Эти проекты очень старые и обновлялись до каждой версии Visual Studio до 2013 года. Часть изменений, которые я сделал, заключалась в том, чтобы использовать как можно больше свойств проекта и макросов по умолчанию. Большинство из них были жестко закодированы.

Хотя я изменил проекты, чтобы использовать макрос $ (Configuration) для отделения артефактов от разных конфигураций, они все равно копируются в общее расположение для других зависимых проектов в других решениях. Поэтому, чтобы избежать путаницы и убедиться, что наша сборка отладки ссылается на все библиотеки отладки (чего раньше не было), я добавлял суффиксы к имени цели. Например. Целевое имя сборки отладочной Unicode будет $ (ProjectName) DU.

проблема

Пока это было здорово, но теперь я не уверен, как выполнить эти изменения для одной из наших библиотек COM. Эта библиотека имеет файл IDL, а компилятор MIDL создает файл TLB. Возможно, это не очень хороший способ сделать это, но сейчас я хотел, чтобы файл TLB также имел другой суффикс в зависимости от сборки. Проблема в том, что когда я изменяю свойство библиотеки типов для конфигурации MIDL, это нарушает директивы времени компиляции в файле RC. Я подумал, что можно использовать #ifdefs в блоке TEXTINCLUDE в зависимости от того, установлены ли _UNICODE или _DEBUG (при условии, что я делаю это через диалоговое окно Resource Includes, чтобы не нарушать файл RC). Это также означает, что существуют другие атрибуты importlib, которые также должны проверять #ifdef.

На данный момент он работает без переименования файлов TLB, но это только потому, что они в настоящее время используются только в этом решении.

Кто-нибудь когда-либо делал что-то подобное или знает лучшее решение?

Обновить

Я думаю, что мне действительно нужно знать здесь, каков наилучший способ использовать типы из одной COM DLL в другую? Должен ли я даже использовать importlib? Документация MSDN гласит, что в большинстве случаев вам следует вместо этого использовать импорт. Я попробовал это, но сломал целую кучу вещей.

1

Решение

Задача ещё не решена.

Другие решения


По вопросам рекламы [email protected]