加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Windows > 正文

com-interop – 在.NET中注册免费COM互操作的确切步骤(调用复制

发布时间:2020-12-14 03:58:16 所属栏目:Windows 来源:网络整理
导读:我想在我的.NET应用程序中添加一个免注册的COM引用.免注册意味着用户无需在其系统中注册COM组件即可运行应用程序. 我发现了很多关于这个主题的文章(例如MSDN,this S/O question等),但没有包含具体步骤.这是我尝试过但没有用的东西: 使用mt.exe为COM dll(比
我想在我的.NET应用程序中添加一个免注册的COM引用.免注册意味着用户无需在其系统中注册COM组件即可运行应用程序.

我发现了很多关于这个主题的文章(例如MSDN,this S/O question等),但没有包含具体步骤.这是我尝试过但没有用的东西:

>使用mt.exe为COM dll(比如foo.dll)生成清单,如this answer所述.
>将foo.dll和foo.dll.manifest添加到我的应用程序中,作为“Build Action”=“Content”和“Copy to Output Directory”=“Copy Are Always”.
>添加对foo.dll附带的interop.foo.dll的引用.
>使用此部分添加应用清单文件:

<dependency>
  <dependentAssembly>
    <assemblyIdentity type="win32" name="foo" />
  </dependentAssembly>
</dependency>

>构建并运行.

有一个错误,说应用程序配置不正确.在< assemblyIdentity>中尝试了不同的值没有运气.

有人可以分享经验吗?谢谢.

解决方法

汉斯的答案有正确的信息,但我不清楚当我第一次看到它时该怎么做.在尝试了许多不同的东西后,我终于让它工作了,这非常简单:

>在开发人员计算机上注册COM类.
>在应用程序项目中,添加COM引用.
>在参考属性中,设置以下内容:

>隔离=真
>复制Local = True
>嵌入Interop Types = False(Hans在评论中指出这是不必要的,但我还没有验证)

通过执行这些步骤,将自动生成interop.foo.dll和应用程序清单.这允许用户无需注册即可使用COM组件.

相反,如果您没有在开发机器上注册COM,您仍然可以通过添加对interop.foo.dll的引用来开发和构建应用程序(可以在注册了COM类并随后复制的COM机器上生成但是,构建结果只能在注册了COM组件的机器上运行.可能有一个解决方案,但需要更深入的了解MSBuild如何使用COM引用,我没有花时间调查.

简而言之,运行时无注册COM的关键是在dev机器上注册COM类.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读