【问题标题】:Automating Com DLL interop version自动化 Com DLL 互操作版本
【发布时间】:2011-04-01 23:04:34
【问题描述】:

因此,当 Visual Studio 构建互操作 dll 时,它会得到 4.0.0.0。

TypeLib 版本是 4.0

但实际的 DLL 版本是 4.0.1.112

我是否可以让 Visual Studio 自动构建互操作 DLL 以假设实际的 DLL 版本?

我是否可以让互操作 DLL 使用我的应用程序中的版本标记。

我只需要让应用程序的互操作 DLL 保持最新,这样安装程序就不会留下旧的互操作。

我真的不想手动执行 tlbimp,但我想当我达到自动化安装程序的程度时,我可以自动化该步骤。

【问题讨论】:

    标签: visual-studio com interop


    【解决方案1】:

    嗯,它确实考虑了 DLL 版本。一个类型库只能有一个主版本号和一个次版本号。你需要将你的 DLL 版本提升到 4.1.x.x

    这是其他适当的行为。 COM 的一个硬性规则是,如果您对公开可见的界面进行更改,则必须更改 GUID。不这样做会导致最糟糕的 DLL 地狱,这种情况会导致客户端应用程序崩溃而没有任何好的方法来诊断原因。

    这不再是修订版更改,而是次要版本更改。 COM 服务器的客户端必须重建。如果您实际上没有更改公共接口,那么拥有 4.0 版本的类型库仍然非常合适。它没有改变。

    【讨论】:

    • 谢谢。我就是这么想的。我们正在尝试使文件版本控制在程序集之间保持同步,以便您可以知道是否有不匹配的地方。我们正在查看此问题,因为我们遇到了您所描述的崩溃类型。
    【解决方案2】:

    我不相信这是可能的。在构建互操作 DLL 时,Visual Studio 将首选 TypeLib 版本。我认为您唯一的办法是使用带有 tlbimp 的手工制作的 DLL 并利用 /asmversion 开关

    【讨论】:

      猜你喜欢
      • 2010-09-27
      • 2012-07-19
      • 2010-11-14
      • 2022-01-22
      • 1970-01-01
      • 2013-12-16
      • 2012-07-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多