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