如何在VS2005中自动生成的互操作程序集中保留COM DLL版本?

时间:2008-12-20 17:24:23

标签: visual-studio com visual-studio-2005 interop assemblies

我在Visual Studio 2005中向我的C#项目添加了对同事的COM DLL - MyLogic.dll的引用。正如所料,这会在我的输出文件夹中自动生成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. 这是一个手动过程,很糟糕
  4. 无论如何,Visual Studio可以自动复制COM版本号吗?

    更新:道歉;我似乎有重复的another question。我确实首先寻找现有的,诚实的。我错过了它。 :(

1 个答案:

答案 0 :(得分:3)

程序集版本号由类型库版本号设置,而不是DLL中的VERSIONINFO资源。请务必在IDL文件中正确设置库的“version”属性:

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

library YourLib {
  // etc
};