NS.*_*.X. 5 com-interop regfreecom
我想向我的 .NET 应用程序添加免注册 COM 引用。免注册意味着用户无需将 COM 组件注册到他们的系统即可运行应用程序。
我找到了很多关于这个主题的文章(例如MSDN、这个 S/O 问题等),但没有一篇包含具体步骤。这是我尝试过但没有奏效的方法:
foo.dll如本答案中所述,使用 mt.exe 为COM dll 生成清单(例如)。foo.dll和foo.dll.manifest到我的应用程序作为“构建操作”=“内容”和“复制到输出目录”=“始终复制”。interop.foo.dll随附的引用foo.dll。使用此部分添加应用清单文件:
<dependency>
<dependentAssembly>
<assemblyIdentity type="win32" name="foo" />
</dependentAssembly>
</dependency>
Run Code Online (Sandbox Code Playgroud)构建并运行。
有一个错误说应用程序配置不正确。在<assemblyIdentity>没有运气的情况下尝试了不同的值。
有人可以分享经验吗?谢谢。
汉斯的回答有正确的信息,但我第一次阅读时并不清楚该怎么做。在尝试了许多不同的事情后,我终于让它工作了,而且非常简单:
通过执行这些步骤,将interop.foo.dll自动生成应用清单。这允许用户无需注册即可使用 COM 组件。
相反,如果你没有在开发机器上注册 COM,你仍然可以通过添加引用来开发和构建应用程序interop.foo.dll(可以在注册了 COM 类的机器上生成然后复制),但是构建结果只能在注册了 COM 组件的机器上运行。可能有一个解决方案,但需要更深入地了解 MSBuild 如何使用 COM 引用,我没有花时间研究。
所以简而言之,运行时免注册COM的关键是在开发机器上注册COM类。
| 归档时间: |
|
| 查看次数: |
4874 次 |
| 最近记录: |