Как сохранить версию COM DLL в автоматически сгенерированной сборке взаимодействия в VS2005? - PullRequest
2 голосов
/ 20 декабря 2008

Я добавил ссылку на COM DLL коллеги - MyLogic.dll - в мой проект C # в Visual Studio 2005. Как и ожидалось, это автоматически генерирует Interop.MyLogicLib.dll в моей выходной папке. Однако номер версии COM DLL - 2.1.0.180, а номер версии автоматически сгенерированной сборки взаимодействия - 1.0.0.0. Как заставить Visual Studio сохранить исходный номер версии?

В нынешнем виде номер версии 1.0.0.0 вызывает у меня горе в установке моего продукта. Установщик отказывается перезаписывать более ранние версии DLL взаимодействия, поскольку как старые, так и новые копии имеют версию 1.0.0.0.

Между прочим, я попытался с помощью "tlbimp /asmversion:2.1.0.180 MyLogic.dll" вручную создать сборку в командной строке, но:

  1. Мой проект отказывается от сборки с помощью сгенерированной вручную сборки, говоря, что используемые мной типы определены в сборке без ссылок, называемой Interop.MyLogicLib.dll (у той, которую я делаю вручную, отсутствует "Interop" ." префикс). Должен признаться, я этого не понимаю.
  2. Мне нужно знать номер версии заранее, вместо того, чтобы инструмент считывал его из COM DLL
  3. Это ручной процесс, который отстой

В любом случае, конечно, Visual Studio может автоматически копировать номер версии COM?

Обновление: Извинения; Я, кажется, продублировал другой вопрос . Честно говоря, я сначала искал существующий. Я просто пропустил это. (

1 Ответ

3 голосов
/ 21 декабря 2008

Номер версии сборки задается номером версии библиотеки типов, а не ресурсом VERSIONINFO в DLL. Обязательно правильно установите атрибут «version» для библиотеки в файле IDL:

import "oaidl.idl";
import "ocidl.idl";
[
  uuid(5F3D3EAC-0F66-4199-B548-654A9174552B),
  version(2.1),
  helpstring("Something descriptive here")
]

library YourLib {
  // etc
};
...