说我有foo.cs
和bar.cs
。如果我为每个源文件创建两个单独的项目并将它们编译为两个 DLL,那么在其他项目中导入和使用它们就没有问题。
如果我想要单个 DLL 的输出,我应该怎么做?(保留单独的源文件)一个 DLL 文件可以有两个命名空间吗?foo
如果没有,我如何将内容bar
放入单个命名空间?(我可以编辑它们)
说我有foo.cs
和bar.cs
。如果我为每个源文件创建两个单独的项目并将它们编译为两个 DLL,那么在其他项目中导入和使用它们就没有问题。
如果我想要单个 DLL 的输出,我应该怎么做?(保留单独的源文件)一个 DLL 文件可以有两个命名空间吗?foo
如果没有,我如何将内容bar
放入单个命名空间?(我可以编辑它们)
您只需要将这两个文件添加到同一个项目中。
一个 DLL 文件可以有两个命名空间吗?
是的。相反,一个命名空间可以在多个 DLL 中使用。
如果我创建两个单独的项目
创建一个项目,其中包含两个文件,以生成一个 DLL 作为输出。命名空间可以是您喜欢的任何名称,但约定建议项目中的类共享一个公共根命名空间。
请参阅ILMerge。
微软说:
ILMerge是一个实用程序,可用于将多个 .NET 程序集合并为一个程序集。它可从Microsoft .NET Framework 开发人员中心的工具和实用程序页面免费使用。
命名空间完全独立于源文件和项目。您可以在一个项目中甚至在一个文件中拥有多个命名空间,也可以在多个项目中拥有一个命名空间。当然,您可以在一个项目中拥有多个源文件(每个项目几乎总是有很多源文件,除非它是“Hello World”项目)
您可以在“应用程序”选项卡的“默认名称空间”字段的项目属性中更改为新源文件提供的默认名称空间。您还可以在项目中创建新文件夹和子文件夹。这些文件夹的名称会自动添加到在这些文件夹中创建的新源文件的默认命名空间(以点分隔.
)。当然,您始终可以手动编辑命名空间语句。您添加或删除和嵌套命名空间语句。
您还可以在一个解决方案中拥有多个项目。您甚至可以在一个解决方案中混合使用不同类型和语言(例如 VB 和 C#)的项目。每个项目通常会生成一个程序集(dll 或 exe)。从技术角度来看,项目是否在同一个解决方案中没有区别。这只是组织问题。
看:
复杂解决方案的示例:
您可以在单个项目中拥有多个子命名空间。不过,至少给项目(以及编译后的 DLL)一个总体命名空间可能是更好的做法。
如果您只需要在这些文件中合并一个类,您可以使用部分类
但无论如何,它们必须在同一个命名空间中。
C# 命名空间非常开放。
是的,您可以在一个库中拥有多个命名空间。
而且:您可以将内容添加到现有的命名空间中。例如:您可以在System.Linq
命名空间中添加扩展方法,这样您只需要包含 dll 而不需要额外的包含。