如何在新的cs文件中覆盖VS2010的自动文件夹 - >命名空间映射

时间:2012-01-17 13:11:08

标签: c# visual-studio visual-studio-2010 projects-and-solutions

项目通常分解为文件夹,通常希望这些文件夹映射到代码名称空间。但是,在我的许多核心项目中,我将类合并到现有名称空间中 - 例如,我有一个MVC参考库,可以在System.Web.MvcSystem.ComponentModel.DataAnnotations中添加其他类型。

在其他项目中,我可能有一套接口和一套这些接口的默认实现;所以我可能会将代码文件拆分为两个单独的文件夹(例如“对象”和“接口”),但我不想拥有ObjectsInterfaces子命名空间。

同样,我经常为其他库中的类型编写扩展方法 - 例如System.String,我将其合并到System命名空间中,以便在您引用程序集时它们已经“存在”。

所以给定这样的项目结构(响应第一个答案,这个项目旨在生成一个包含所有命名空间的程序集;并且可能是一个可能被签名的dll):

Our.Core.Library
|->System
|  |->StringExtensions.cs
|->System.Web.Mvc
|  |->AnotherModelBinder.cs
|->OurCoreClass.cs

在上面,我希望添加到根目录的新文件位于命名空间Our.Core.Library中,但我希望添加到System和System.Web.Mvc文件夹的新文件位于SystemSystem.Web.Mvc分别。但VS会给他们一个Our.Core.Library.System的默认命名空间。

这是一个小小的抱怨,但我希望能够覆盖特定代码文件夹的默认命名空间,以便我可以控制它。任何想法如何实现这一目标?我已经为项目尝试了一个空的默认命名空间,这可能在逻辑上使它适用于子文件夹,但显然不适用于根目录;但是,VS Properties页面不接受空命名空间。

理想情况下,我可以轻松地在整个开发团队中复制这个解决方案,以便其他开发人员能够在遵守架构师/规划阶段设置的命名空间结构的同时添加代码文件。

2 个答案:

答案 0 :(得分:0)

每个C#项目设置在应用程序选项卡中都有一个Default namespace选项,您可以将其更改为在向项目添加更多文件时生效的任何其他值。每个项目只允许一个设置

enter image description here

您可以将项目分解为多个项目,并使不同项目的默认值不同

答案 1 :(得分:0)

基本上,我能够做到这一点的唯一方法是将自己的扩展名编写到Visual Studio中。它甚至可能需要它自己的项目或项目向导 - 如果我可以得到任何工作,我会在将来发布它。