在C#中静态链接COM DLL(避免regfree)

在C#中静态链接COM DLL(避免regfree),c#,.net,visual-c++,static-libraries,regfreecom,C#,.net,Visual C++,Static Libraries,Regfreecom,我可能有一个愚蠢的问题: 我们有一个VC++COM DLL(内部开发),我们已经将我们的主要应用程序移植到C#,并使用COM Interop,reg free访问COM DLL。使用内部嵌入的清单,一切正常 但是,友好的产品开发人员/市场营销人员/销售人员希望最小化软件包并直接包含COM dll。不知何故,有人开始相信应用程序发行版应该只包含exe(因为它是非托管的,我们不能将其合并) 既然我们有了COM的tlb/lib,我们是否可以以某种方式静态链接它,而不将整个COM移植到C#managed

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

我们有一个VC++COM DLL(内部开发),我们已经将我们的主要应用程序移植到C#,并使用COM Interop,reg free访问COM DLL。使用内部嵌入的清单,一切正常

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

既然我们有了COM的tlb/lib,我们是否可以以某种方式静态链接它,而不将整个COM移植到C#managed re work

多谢各位


请原谅我的措辞:公司被裁员了,我是Python的家伙,在过去一周左右的时间里必须学习.NET的一切,因为现在我在做我的工作,还有两位前高级.NET开发人员的工作

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


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

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

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

看起来Costura或多或少可以做到这一点。

它专门支持将非托管程序集(即,C++ +DLL)合并到.NET程序集。

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

看起来Costura或多或少可以做到这一点。

它专门支持将非托管程序集(即,C++ +DLL)合并到.NET程序集。


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

是的,这是分发软件产品的常用方法。名称也已标准化:setup.exe。使用Visual Studio安装项目轻松创建。把它作为一个可执行文件放在目标机器的磁盘上是不可能的,但当然没有人会在意。我欣赏这种幽默,但我想我们处于不同的食物链层次。谢谢你的笑声。是的,这是分发软件产品的常见方式。名称也已标准化:setup.exe。使用Visual Studio安装项目轻松创建。把它作为一个可执行文件放在目标机器的磁盘上是不可能的,但当然没有人会在意。我欣赏这种幽默,但我想我们处于不同的食物链层次。谢谢你的笑声。我听说了虚拟化,ala appbox.com,我认为预订是兼容性和目标构建,更不用说spoon上的高昂价格了。我们最近没有看spoon的价格,我们在他们易手之前就买了它。此外,我们在兼容性方面没有任何问题,尽管它不会构建64位应用程序。我听说了虚拟化,ala appbox.com,我认为预订是为了兼容性和目标构建,更不用说spoon上的高昂价格了。最近没有看spoon的价格,我们在他们易手之前就购买了它。此外,我们在兼容性方面没有任何问题,尽管它不会构建64位应用程序。