【问题标题】:Can I use manifests to consume a COM server without specifying its version?我可以使用清单来使用 COM 服务器而不指定其版本吗?
【发布时间】:2011-02-23 06:01:23
【问题描述】:

我们的两个程序使用具有相同类 ID 的相同 COM 服务器(也是我们制造的)。每个程序在安装时都会将 COM 服务器文件复制到其文件夹中,并 regsvr32s 复制 COM 服务器。

问题是如何安装 COM 服务器,以便用户可以将我们的一个或两个程序以任意顺序安装到不同的文件夹中,并且可能安装不同的版本。显然,不更改类 ID 是不可能的,而且配置很麻烦。理想情况下,我们希望为此使用清单而不使用 regsvr32

问题是每次我阅读有关无注册 COM(例如,here)时,assemblyIdentity 中都有 version 属性。版本号应该每晚构建一次,我完全不喜欢(自动)调整它的想法。我理解为什么指定对特定版本的依赖是好的,但在我们的场景中它完全没用。

有没有办法为 COM 服务器和消费者编写清单,以便他们不指定版本而只使用文件夹中恰好存在的文件的任何版本?还有没有办法将搜索限制在与消费者相同的文件夹中?

【问题讨论】:

    标签: visual-studio visual-studio-2008 com manifest side-by-side


    【解决方案1】:

    Windows 仅在 global location followed by the application directory 中搜索清单。如果您没有在全局范围内安装任何东西,则搜索实际上会被限制在同一个文件夹中。

    如果您始终将 COM 服务器与 COM 客户端放在同一个文件夹中,那么它们实际上是一个“软件单元”。 version 注意事项是不同软件单元之间的接口合同,因此在您的场景中这并不重要。您可以从身份中省略版本属性,也可以将其设置为固定的值,例如“1.0.0.0”,知道此时,确保正确的版本控制故事取决于您分发软件的方式,而不是侧面-并排系统。

    【讨论】:

      猜你喜欢
      • 2011-02-23
      • 2014-07-30
      • 1970-01-01
      • 2013-05-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-03
      • 2023-03-03
      相关资源
      最近更新 更多