.net - 如果文件用作引用程序集,是否有理由创建 .net DLL 而不是 EXE?

标签 .net dll assemblies exe

我注意到我不仅可以添加对 DLL 的引用,还可以添加对 Visual Studio 中的 EXE 的引用,并像访问 DLL 一样访问 EXE 中的所有类。

是否有任何理由创建 DLL 或者我也可以引用 EXE?

我问是因为我经常编写在 Windows 和 Mac OS 下运行的 .net 程序,我通常的解决方案是创建一个具有功能的 DLL,然后创建两个 GUI,每个目标一个。

但是,现在在我看来好像我可以只编写我的应用程序的 Windows 版本,然后将该 Windows 版本(EXE 文件)添加到我的 Mac 项目并引用 Windows EXE 而不是 DLL。它还具有额外的优势,我可以从 Mac 文件夹运行 Windows 版本,而无需添加其他文件。

有什么好的理由不这样做吗?

最佳答案

如果您愿意,可以将所有程序集构建为可执行文件 (.exe) 并引用它们。如果程序集编译为可执行文件 (.exe) 或类库 (.dll),则 .NET 没有区别。

唯一的区别是可执行文件有一个额外的 Portable Executable (PE)格式和标题,以便它们可以在 Windows 系统上执行。此 header 主要用于启动 CLR 运行时。

备注 :您还可以将 .dll 程序集构建为 Portable Class Libraries

关于.net - 如果文件用作引用程序集,是否有理由创建 .net DLL 而不是 EXE?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7174454/

相关文章:

vba - 已注册的 COM DLL 在 VBA 中有效,但在 VBScript 中无效

c# - 未找到引用程序集 - 如何获取解决方案中包含的所有 DLL

.net - Winforms:在已经打开的模态对话框中打开第二个模态对话框

c# - 如何通过C#程序打开程序并赋予该程序焦点

c# - 区分相同类型的异常

tfs - Team Build 2010 - 第三方程序集引用未复制到输出文件夹

.net - 在 VS2012 中找不到 Microsoft.Office.Interop 程序集

c# - HttpWebRequest - 基础连接已关闭 : An unexpected error occurred on a send

C++ 头文件包装器库

dll - 视觉C++ 2010 : How do I tell the compiler that it requires a specific DLL?