1

我可能有一个愚蠢的问题:

我们有一个 VC++ COM DLL(内部开发),我们已将我们的主应用程序移植到 C# 并使用 COM Interop,无需注册即可访问 COM dll。使用内部嵌入式清单一切正常。

但是,友好的产品开发/营销/销售希望将包最小化并直接包含COM dll。不知何故,有人开始相信应用程序发行版应该只包含 exe(因为它是非托管的,我们不能只是 ILMerge 它)。

既然我们有 COM 的 tlb/lib,我们能否以某种方式静态链接它,而不将整个 COM 移植到 C# 管理的返工?

谢谢

PS 请原谅我的措辞:公司规模缩小了,我是 Python 人,上周左右必须学习所有 .NET,因为现在我正在做我的工作和 2 位前高级 .net 开发人员的工作

4

2 回答 2

1

看起来 Costura或多或少可以做到这一点。 https://github.com/Fody/Costura

它特别支持将非托管程序集(即 C++ DLL)合并到 .NET 程序集中。

注意 - 这不是真正的静态链接,但可以实现将所有内容打包在单个 EXE 中以进行分发的目的。

于 2018-05-04T15:25:23.693 回答
0

可以将 COM DLL 的源代码包含到 exe 的项目中,或者您可以将 COM DLL 项目更改为静态库项目。完成此操作后,您必须修改代码以直接创建 COM 对象。总而言之,这两种选择都不是特别容易。

或者,您可以研究像Spoon Studio这样的产品,它允许您将 exe 和 COM DLL 包装到一个 exe 中而无需任何代码。

于 2011-02-24T17:34:41.150 回答