我可能有一个愚蠢的问题:
我们有一个VC ++ COM DLL(内部开发),我们已经将我们的主应用程序移植到C#并使用COM Interop,无需注册即可访问COM dll。内部嵌入式清单一切正常。
然而,友好的产品开发/营销/销售希望最小化包并直接包含COM dll。不知何故,有人确信app发行版应该只包含exe(因为它不受管理我们不能只是ILMerge它)。
由于我们有COM的tlb / lib,我们可以以某种方式静态链接它,而无需将整个COM移植到C#管理的重新工作吗?
谢谢
P.S。请原谅我的措辞:公司缩小规模,我是Python人,在上周左右必须学习.NET,因为现在我正在完成我的工作以及2位前高级.net开发人员的工作
答案 0 :(得分:1)
看起来Costura可以或多或少这样做。 https://github.com/Fody/Costura
它特别支持将非托管程序集(即C ++ DLL)合并到.NET程序集中。
注意 - 这不是真正的静态链接,但可以实现将所有内容打包到单个EXE中的目的。
答案 1 :(得分:0)
可以将COM DLL的源包含到exe的项目中,或者可以将COM DLL项目更改为静态lib项目。完成后,必须修改代码才能直接创建COM对象。所有人都说,这两种选择都不是特别容易。
或者你可以查看像Spoon Studio这样的产品,它们允许你将exe和COM DLL包装成一个没有任何代码的exe。