Автоматизация Com Com версии взаимодействия - PullRequest
0 голосов
/ 21 августа 2010

Таким образом, когда Visual Studio строит dll взаимодействия, он получает 4.0.0.0.

Версия TypeLib - 4.0

Но версия DLL на самом деле - 4.0.1.112

В любом случае, я могу заставить Visual Studio автоматически собрать библиотеку взаимодействия для принятия версии DLL всех актуальных файлов?

Могу ли я альтернативно заставить библиотеку взаимодействия использовать штамп версии из моего приложения.

Я простомне нужно поддерживать текущее состояние взаимодействия DLL с приложением, чтобы установщик не оставлял старые операции взаимодействия.

Я действительно не хочу делать tlbimp вручную, но, думаю, когда я подойду к вопросу автоматизацииустановщик, я мог бы автоматизировать этот шаг.

Ответы [ 2 ]

2 голосов
/ 21 августа 2010

Ну, это действительно учитывает версию DLL.Библиотека типов может иметь только основной и вспомогательный номер версии.Вам нужно будет увеличить вашу версию DLL, скажем, до 4.1.xx

Это иное подходящее поведение.Одно из жестких правил COM заключается в том, что вы должны изменить GUID, если вы вносите изменения в общедоступный интерфейс.Невыполнение этого требования вызывает наихудший вид DLL Hell, который приводит к сбою клиентского приложения без какого-либо хорошего способа выяснить причину.

Это уже не изменение редакции, это несущественное изменение версии.Клиенты COM-сервера должны быть перестроены.Если вы на самом деле не меняли публичный интерфейс, тогда иметь версию библиотеки типов 4.0 все еще вполне уместно.Это не изменилось.

1 голос
/ 21 августа 2010

Я не верю, что это возможно.Visual Studio предпочтет версию TypeLib при сборке библиотеки взаимодействия.Я думаю, что единственным выходом для вас является использование созданной вручную DLL с tlbimp и использование ключа / asmversion

...