【问题标题】:How can I compile two .cs files into single DLL?如何将两个 .cs 文件编译成单个 DLL?
【发布时间】:2012-12-16 23:40:50
【问题描述】:

假设我有foo.csbar.cs。如果我为每个源文件创建两个单独的项目并将它们编译为两个 DLL,那么在其他项目中导入和使用它们是没有问题的。

如果我想要单个 DLL 的输出,我应该怎么做?(保留单独的源文件)一个 DLL 文件可以有两个命名空间吗?如果没有,我如何将 foobar 的内容放入单个命名空间? (我可以编辑它们)

【问题讨论】:

  • 你的最终目标是什么?你想完成什么?
  • 不客气。另外,由于您是 StackOverflow 的新手,我想通知您,您可以通过勾选答案旁边的勾号来为好的答案投票并接受对您帮助最大的答案。在本网站上,点赞或接受的答案都算作“感谢”。

标签: c#


【解决方案1】:

ILMerge

微软说:

ILMerge 是一个实用程序,可用于将多个 .NET 程序集合并为一个程序集。它可以在Microsoft .NET Framework Developer CenterTools & Utilities 页面上免费使用。


命名空间完全独立于源文件和项目。您可以在一个项目中甚至在一个文件中拥有多个命名空间,也可以在多个项目中拥有一个命名空间。当然,您可以在一个项目中拥有多个源文件(每个项目几乎总是有很多源文件,除非它是“Hello World”项目)

您可以在“应用程序”选项卡的“默认名称空间”字段的项目属性中更改为新源文件提供的默认名称空间。您还可以在项目中创建新文件夹和子文件夹。这些文件夹的名称会自动添加到在这些文件夹中创建的新源文件的默认命名空间(由点 . 分隔)。当然,您始终可以手动编辑命名空间语句。您可以添加或删除和嵌套命名空间语句。

您还可以在一个解决方案中拥有多个项目。您甚至可以在一个解决方案中混合使用不同类型和语言(例如 VB 和 C#)的项目。每个项目通常会生成一个程序集(dll 或 exe)。从技术角度来看,项目是否在同一个解决方案中没有区别。这只是组织问题。

见:

复杂解决方案示例:

【讨论】:

    【解决方案2】:

    如果您只需要在这些文件中合并一个类,您可以使用partial classes

    但无论如何它们都必须在同一个命名空间中。

    【讨论】:

      【解决方案3】:

      您可以在单个项目中拥有多个子命名空间。不过,至少为项目(以及编译后的 DLL)提供一个总体命名空间可能是更好的做法。

      【讨论】:

        【解决方案4】:

        C# 命名空间相当开放。

        是的,您可以在一个库中拥有多个命名空间。

        此外:您可以将内容添加到现有的命名空间中。例如:您可以将扩展方法添加到System.Linq 命名空间中,这样您只需要包含 dll 而不需要额外的包含。

        【讨论】:

          【解决方案5】:

          如果我创建两个单独的项目

          创建一个项目,其中包含两个文件,以生成一个 DLL 作为输出。命名空间可以是您喜欢的任何名称,但惯例建议项目中的类共享一个公共根命名空间。

          【讨论】:

            【解决方案6】:

            您只需将这两个文件添加到同一个项目中。

            一个 DLL 文件可以有两个命名空间吗?

            是的。相反,一个命名空间可以在多个 DLL 中使用。

            【讨论】:

              猜你喜欢
              • 2012-02-19
              • 2010-09-18
              • 1970-01-01
              • 1970-01-01
              • 2020-08-13
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多