项目通常分解为文件夹,通常希望这些文件夹映射到代码名称空间。但是,在我的许多核心项目中,我将类合并到现有名称空间中 - 例如,我有一个MVC参考库,可以在System.Web.Mvc
或System.ComponentModel.DataAnnotations
中添加其他类型。
在其他项目中,我可能有一套接口和一套这些接口的默认实现;所以我可能会将代码文件拆分为两个单独的文件夹(例如“对象”和“接口”),但我不想拥有Objects
和Interfaces
子命名空间。
同样,我经常为其他库中的类型编写扩展方法 - 例如System.String
,我将其合并到System
命名空间中,以便在您引用程序集时它们已经“存在”。
所以给定这样的项目结构(响应第一个答案,这个项目旨在生成一个包含所有命名空间的程序集;并且可能是一个可能被签名的dll):
Our.Core.Library
|->System
| |->StringExtensions.cs
|->System.Web.Mvc
| |->AnotherModelBinder.cs
|->OurCoreClass.cs
在上面,我希望添加到根目录的新文件位于命名空间Our.Core.Library
中,但我希望添加到System和System.Web.Mvc文件夹的新文件位于System
和System.Web.Mvc
分别。但VS会给他们一个Our.Core.Library.System
的默认命名空间。
这是一个小小的抱怨,但我希望能够覆盖特定代码文件夹的默认命名空间,以便我可以控制它。任何想法如何实现这一目标?我已经为项目尝试了一个空的默认命名空间,这可能在逻辑上使它适用于子文件夹,但显然不适用于根目录;但是,VS Properties页面不接受空命名空间。
理想情况下,我可以轻松地在整个开发团队中复制这个解决方案,以便其他开发人员能够在遵守架构师/规划阶段设置的命名空间结构的同时添加代码文件。
答案 0 :(得分:0)
每个C#项目设置在应用程序选项卡中都有一个Default namespace
选项,您可以将其更改为在向项目添加更多文件时生效的任何其他值。每个项目只允许一个设置
您可以将项目分解为多个项目,并使不同项目的默认值不同
答案 1 :(得分:0)
基本上,我能够做到这一点的唯一方法是将自己的扩展名编写到Visual Studio中。它甚至可能需要它自己的项目或项目向导 - 如果我可以得到任何工作,我会在将来发布它。