Как переопределить автоматическое сопоставление папок-> пространства имен VS2010 в новых файлах cs - PullRequest
10 голосов
/ 17 января 2012

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

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

Ответы [ 2 ]

0 голосов
/ 25 января 2012

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

0 голосов
/ 17 января 2012

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

enter image description here

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

...