2016-07-15 2 views
1

Учитывая два проекта:ReSharper: переопределение пространство имен по умолчанию, чтобы предотвратить «пространство имена не соответствует файлу местоположение»

  • модели, сборка «Company.Product.Model», пространство имен по умолчанию «Company.Product.Model»
  • Model.Server, сборка «Company.Product.Model.Server», пространства имен по умолчанию «Company.Product.Model.Server»

Как вы можете видеть, что оба проекта имеют разные пространства имен по умолчанию. Это ради ресурсов - оба проекта имеют свой собственный ресурс.resx, который будет иметь полные имена на основе пространств имен проектов по умолчанию.

Но оба проекта имеют классы, связанные с «моделью», поэтому я хочу, чтобы они находились в одном пространстве имен - «Company.Product.Model». Поэтому я использую это пространство имен в обоих проектах.

Проблема заключается в том, что ReSharper требует от меня использовать пространство имен «Company.Product.Model.Server» для классов в проекте Model.Server, поскольку это пространство имен по умолчанию (базовое): «Пространство имен не соответствует местоположению файла. . ".

Понятно, что это хорошо по умолчанию. Но я хочу переопределить это и сказать, что все пространства имен классов основаны на «Company.Product.Model» без изменения пространства имен по умолчанию для проекта.

Возможно ли это?

+1

Resharper не заставляет вас менять пространство имен. Он просто советует вам это делать. Сказать, что при большинстве вариантов есть возможность временно отключить данную проверку. Попробуйте нажать на лампочку/гаечный ключ, который появляется, когда вы нажимаете на «ошибочное» пространство имен, и вы должны иметь возможность (в меню) временно отключить проверку. – Pheonyx

+1

«Как вы можете видеть, у обоих проектов разные пространства имен по умолчанию. Это ради ресурсов». В самом деле? Оба должны иметь разные пространства имен, поскольку они представляют собой разные проекты/сборки. Использование пространства имен 'Company.Product.Model' для классов в« Model.Server »создаст путаницу для других разработчиков, поскольку они не найдут классы в проекте, в котором они ожидают, что они находятся. –

+0

@Pheonyx Конечно, я могу отключить предупреждение , но я не хочу. – Shrike

ответ

3

Если вы поместили выделение в одну из папок в обозревателе решений, затем отобразите окно инструмента «Свойства», там есть опция «Провайдер пространства имен». Если вы установите значение false, ReSharper больше не будет предлагать, чтобы ваши пространства имен включали эту папку.

Дополнительная информация в the docs.

+0

Да, но мой вопрос о другом. У меня есть проект с пространством имен по умолчанию «Company.Product.Model.Server» и класс Foo в этом проекте (не в папке) в пространстве имен «Company.Product.Model». И я хочу, чтобы R # рассматривал такое имя как правильное («Company.Product.Model.Foo») – Shrike

+0

А, правильно. Для корневой папки вам нужно будет изменить пространство имен по умолчанию в свойствах проекта. Однако это повлияет на все дочерние папки в проекте. Вы хотите иметь класс в корневой папке с другим пространством имен для других классов в корневой папке? А как насчет других классов в проекте - используют ли они пространство имен по умолчанию? Как вы считаете, что эта работа лучше подходит для вашего сценария? – citizenmatt

+0

Я просто хочу изменить базовое пространство имен для всех классов в проекте, не изменяя опцию «Default Namespace» в настройках проекта. Я не могу изменить «пространство имен по умолчанию», потому что это повлияет на имена ресурсов resx-ресурсов этого проекта. – Shrike

Смежные вопросы