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

发布于 2024-11-29 11:27:17 字数 93 浏览 2 评论 0原文

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

how to produce a mix of dll and exe in one C# project in visual studio or other build tools ?
Is it technically possible ?
Yes I know it can done in 2 or more projects .

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

狼性发作 2024-12-06 11:27:17

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

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

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

I'm not sure what the motivations for your question are, as you can reference a .Net executable as if it were a dll anyway, but you could consider copying the exe file to a dll file with the same name (yes it's a hack but not sure of your motivations).

You can automate this process using a Visual Studio post-build event for your project. This will handle creating the dll copy each time you have a successful build:

copy "$(TargetPath)" "$(TargetDir)$(TargetName).dll"
溺深海 2024-12-06 11:27:17

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

首先我们需要清楚,“exe”和“dll”本质上是相同的,但区别在于 Windows 与它们交互的方式。

当 Windows 加载 dll 时,它会运行初始化代码,然后不管它。如果应用程序显式引用了 dll 中的函数,则会调用这些函数。另一件事是,当 dll 崩溃时,它不仅自身崩溃,而且应用程序也会崩溃,因为 dll 在父应用程序的内存中运行。

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

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

Technically, a mix of exe and dll would be simply an exe. Nothing's wrong with using it as a library e.g reference to it in other projects.

First we need to be clear that both "exe" and "dll" are fundamentally the same but the difference lies in how windows interacts with them.

When windows loads a dll, it runs the initialization code and then leaves it alone. Functions in the dll are called if they are explicitly referenced by an application. Another thing, when dll gets crashed it not only crashes itself but also the application as the dll runs in the memory of the parent application.

When windows load an exe, the exe's initialization code is responsible for creating what is called as "message pump", nothing but a program loop which runs as long as the application is running. The message pump request messages from the operating system. Windows keep track of the application as a separate task. It allocates separate memory for both the exe and the application using that exe. The memory area in which each exe runs is called "Process Space".

Dan Appleman - Developing ActiveX Components with Visual Basic 5.0

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文