Как переопределить VS2010 автоматическую папку-> сопоставление пространства имен в новых файлах cs

Проекты часто разбиваются на папки, и обычно эти папки должны отображаться в пространствах имен. Однако во многих моих основных проектах у меня есть классы, которые я объединил в существующие пространства имен - например, у меня есть справочная библиотека 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 не принимает пустое пространство имен.

В идеале это было бы решением, которое я могу легко реплицировать во всей нашей команде разработчиков, чтобы другие разработчики могли добавлять файлы кода, придерживаясь структуры пространства имен, изложенной на этапе архитектор/планирование.

Ответ 1

В принципе, единственный способ, которым я собираюсь это сделать, - написать собственное расширение для Visual Studio. Это может даже потребовать его собственный мастер проекта или элемента - если я смогу получить что-нибудь работающее, я опубликую его здесь в будущем.

Ответ 2

Каждая настройка проекта С# имеет вкладку Default namespace на вкладке приложения, которую вы можете изменить на любое другое значение, которое вступит в силу при добавлении в проект дополнительных файлов. Допускается только один параметр для проекта

enter image description here

Вы можете разбить свой проект на несколько проектов и по умолчанию быть разными для разных проектов.