如何在Visual Studio或其他构建工具中的一个C#项目中生成dll和exe的混合?

如何在Visual Studio或其他构建工具中的一个C#项目中生成dll和exe的混合? 技术上可行吗? 是的我知道它可以在2个或更多项目中完成。

我不确定你的问题的动机是什么,因为你可以引用一个.Net可执行文件,好像它是一个dll,但你可以考虑将exe文件复制到一个同名的dll文件(是的,它是一个黑客但不确定你的动机)。

您可以使用项目的Visual Studio post-build事件自动执行此过程。 这将在每次成功构建时处理创建dll副本:

copy "$(TargetPath)" "$(TargetDir)$(TargetName).dll" 

从技术上讲,exe和dll的混合只是一个exe。 将它用作库是没有错的,例如在其他项目中引用它。

首先,我们需要明确“exe”和“dll”基本相同,但区别在于windows如何与它们交互。

当windows加载一个dll时,它运行初始化代码,然后单独使用它。 如果应用程序显式引用了dll中的函数,则会调用它们。 另一件事,当dll崩溃时,它不仅会崩溃自己,还会在dll在父应用程序的内存中运行时崩溃。

当windows加载exe时,exe的初始化代码负责创建所谓的“消息泵”,只需要一个程序循环,只要应用程序运行就会运行。 消息泵请求来自操作系统的消息。 Windows将应用程序作为单独的任务进行跟踪。 它使用该exe为exe和应用程序分配单独的内存。 每个exe运行的内存区域称为“进程空间”。

Dan Appleman – 使用Visual Basic 5.0开发ActiveX组件