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

Visual studio 如何在VS2005中自动生成的互操作程序集中保留COM DLL版本?,visual-studio,com,visual-studio-2005,interop,assemblies,Visual Studio,Com,Visual Studio 2005,Interop,Assemblies,我在VisualStudio2005中的C#项目中添加了对同事的COM DLL(MyLogic.DLL)的引用。正如预期的那样,这将在我的输出文件夹中自动生成Interop.MyLogicLib.dll。但是,COM DLL的版本号为2.1.0.180,而自动生成的互操作程序集的版本号为1.0.0.0。如何让Visual Studio保留原始版本号 目前来看,1.0.0.0版本号让我在产品的安装过程中感到悲伤。安装程序拒绝覆盖interop DLL的早期版本,因为旧副本和新副本都有1.0.0.0

我在VisualStudio2005中的C#项目中添加了对同事的COM DLL(MyLogic.DLL)的引用。正如预期的那样,这将在我的输出文件夹中自动生成Interop.MyLogicLib.dll。但是,COM DLL的版本号为2.1.0.180,而自动生成的互操作程序集的版本号为1.0.0.0。如何让Visual Studio保留原始版本号

目前来看,1.0.0.0版本号让我在产品的安装过程中感到悲伤。安装程序拒绝覆盖interop DLL的早期版本,因为旧副本和新副本都有1.0.0.0版本

顺便说一句,我尝试使用“tlbimp/asmversion:2.1.0.180 MyLogic.dll”在命令行手动生成程序集,但是:

  • 我的项目拒绝使用手动生成的程序集生成,说我使用的类型是在名为Interop.MyLogicLib.dll的未引用程序集中定义的(我手动生成的程序集没有“Interop.”前缀)。不得不承认,我不明白这一点
  • 我需要提前知道版本号,而不是让工具从COM DLL读取
  • 这是一个手动过程,很糟糕
  • 无论如何,VisualStudio是否可以自动复制COM版本号


    更新:道歉;我似乎复制了。老实说,我确实先找了一个现有的。我只是错过了(

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

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

    谢谢。考虑到IDL只能指定主要版本和次要版本,我想我会坚持手动生成互操作,因为我需要更精细的版本控制。如果程序集版本号由类型库版本号设置,那么tlbimp中/asmversion选项的用途是什么?我们不能通过tlbimp覆盖此版本号吗?Th当然,at需要覆盖它。然而,一个坏主意是,需要在版本中获得一个内部版本号。