繁体   English   中英

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

[英]how to produce a mix of dll and exe in one C# project in visual studio or other build tools?

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

我不确定您提出问题的动机是什么,因为您可以引用 a.Net 可执行文件,就好像它是 dll 一样,但是您可以考虑将 exe 文件复制到具有相同名称的 dll 文件中(是的,这是一个 hack但不确定你的动机)。

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

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

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

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

当 windows 加载 dll 时,它会运行初始化代码,然后不理会它。 如果 dll 中的函数被应用程序显式引用,则它们会被调用。 另一件事是,当 dll 崩溃时,它不仅会崩溃,还会导致应用程序崩溃,因为 dll 在父应用程序的 memory 中运行。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM