як змінити простір імен всього проекту?


104

Я змінюю демонстраційну програму з цієї статті: http://msdn.microsoft.com/en-us/magazine/dd419663.aspx

Мені потрібно оновити всі файли, щоб використовувати мою область імен, наприклад, зараз файл, розташований тут:

MySolution\MyApp\DemoApp\ViewModel\MainWindowViewModel.cs

використовує таке простір імен:

namespace DemoApp.ViewModel
{
/// <summary>
/// The ViewModel for the application's main window.
/// </summary>
public class MainWindowViewModel : WorkspaceViewModel

Мені потрібно перемістити файл сюди (видалити папку DemoApp):

MySolution\MyApp\ViewModel\MainWindowViewModel.cs

а також використовувати правильний простір імен:

namespace MyApp.ViewModel
{
....

як це зробити у візуальній студії 2010?

Оновити нормально тут можливо дублікат Змінити простір імен проектів у Visual Studio Тепер я знаю, як змінити простір імен проекту, але як переміщувати файли у файловій системі? (позбудься папки "DemoApp")


4
Як і FYI, вам не обов'язково потрібні простори імен, щоб відповідати структурі папок у .NET, це не потрібно.
Джеймс Майкл Заєць

1
Як сказав Джеймс, це не потрібно. Але я б запитав, чому хтось не "закінчив роботу" в додатку, над яким я працював.
NotMe

1
Що стосується переміщення файлів .. Гм, вирізати / вставити та перетягнути / падати, як правило, працює у візуальному менеджері рішення студії .. або навіть просто перейменувати папку чи видалити. залежно від того, що ви насправді намагаєтесь зробити.
NotMe

Відповіді:


124

Я думаю, що проста заміна файлів ( Ctrl+ Shift+ H) трішки зробить трюк; просто замінити namespace DemoAppна namespace MyApp. Після цього побудуйте рішення та шукайте помилки компіляції для невідомих ідентифікаторів. Все, що має повну кваліфікацію DemoApp, потрібно буде змінити MyApp.


62
Важливо; також змінити простір імен за замовчуванням у властивостях проекту; це керує простором імен для речей, таких як resx
Marc Gravell

У мене є пара файлів XAML, які представляють вікна WPF, тому це не працює для мене.
Пітер

6
Ви повинні також запустити Замінити на будь-які usingзаяви на зміну від using DemoAppдо using Myapp.
swbandit

5
також перейменуйте <add namespace = "OldNameSpace" /> у всіх файлах web.config у папці "
Views"

@Pieter Ви повинні мати можливість замінити все для всієї програми з наступним оновленням властивостей, як пропонує Марк, а потім закрити рішення та знову відкрити його, інакше VS має незрозумілу поведінку з деяким автоматичним завершенням.
Ерік

153

Перейдіть кудись, простір імен оголошено в одному з ваших файлів. Покладіть курсор на ту частину простору імен, яку ви хочете змінити, і натисніть F2. Це має перейменувати простір імен у кожному файлі. Принаймні, це працювало в моєму маленькому демонстраційному проекті, який я створив, щоб перевірити цю відповідь!

Залежно від вашої версії VS, ярлик також може бути Ctrl- R, Ctrl- R.


1
чомусь не працює для мене. Я натискаю F2 і нічого не відбувається.
javapowered

6
@javapowered, то ваша гаряча клавіша була налаштована. Подивіться у своїх варіантах VS. Сьогодні шахта CTRL-R CTRL-R.
Емі

4
Примітка. Хоча я все ще віддаю перевагу цьому методу, він [зрозуміло] не зміг замінити посилання у представленнях даних та у файлі web.config, що міститься у каталозі Views /. Просто слідкуйте за тими.
Wiseguy

3
Для версії, яка не повинна залежати від змін гарячої клавіші, просто клацніть правою кнопкою миші ім’я простору імен та виберіть перейменувати.
Кет

3
На жаль, це не спрацьовує, якщо ви хочете, щоб нове ім’я містило .символ.
Botond Balázs

27

Просто клацніть правою кнопкою миші рішення, перейдіть до властивостей, змініть "простір імен за замовчуванням" у розділі "Застосування".

введіть тут опис зображення


3
Чи змінює простір імен у існуючих файлах?
Приєш Кумар

5
Ні, не буде.
Anuja Lamahewa

3

Ctrl+ Shift+ Hне справжнє рішення.

Ви можете використовувати Resharper, щоб змінити всі визначення простору імен у своєму рішенні. Це найкращий спосіб, який я намагався раніше.

https://www.jetbrains.com/resharper/features/code_refactoring.html


2
resharper вимагає повноцінного дорогого настільного верстата
Іван Григорович

@IvanG. ну багато комерційних проектів також вимагають повноцінного дорогого розробника, тому машина та ліцензія R # не надто дорогі в грандіозній схемі речей;) Якщо вам потрібно перевірити, чи цей метод (або Адама чи Емі) працював правильно , ви можете подивитися проблеми з кодом
StuartLC

1
@StuartLC, на жаль, минули дні спеціалізованого робочого місця та великого робочого столу, я використовую для своєї розробки справді потужний ноутбук, і його перетворення практично не вбиває, тому я не рекомендую його рекомендувати тим, хто цінує час.
Іван Григорович

Хлопці, які ви можете просто використати для перейменування безкоштовно ви знаєте :-) Встановіть його, активуйте безкоштовну пробну версію, перейменуйте її та видаліть, якщо хочете ;-)
Selçuk Ermaya

1

Я пройшов структуру папок за допомогою інструменту під назвою BareGrep, щоб переконатися, що я отримав усі зміни в просторі імен. Це безкоштовний інструмент, який дозволить вам шукати файли у визначеній структурі файлів.


Збіг файлу REGEX: (.exe) | (.dll) | (.cache) | (.pdb), потім перевернути відповідність . повторіть цю схему, щоб виключити інші бінарні файли та ін.
twobob


1

Ви можете використовувати ReSharper для рефакторингу простору імен. Це дасть 30 днів безкоштовної пробної версії. Це змінить набір імен відповідно до структури папки.

Кроки:

1) Клацніть правою кнопкою миші проект / папку / файли, які ви хочете переробити.

2) Якщо ви встановили ReSharper, ви отримаєте опцію Рефактор-> Налаштувати простори імен .... Отже, натисніть на це.

введіть тут опис зображення

Це автоматично змінить пробіли імен усіх вибраних файлів.


Дякую .. Я зміг це зробити.
sgowd

0

Я спробував усе, але знайшов рішення, яке справді працює. Це створює самостійне рішення з новою назвою простору імен тощо.

  1. У головній формі знайдіть ім'я простору імен -> клацніть правою кнопкою миші -> Refactor -> Перейменувати та виберіть нове ім'я. Позначте всі поля та натисніть кнопку ОК.

  2. У провіднику рішень перейменуйте ім'я рішення на нове ім'я.

  3. У досліднику рішень перейменуйте назву проекту на нову назву.

  4. Закрийте VS та перейменуйте папку (наприклад, загальний командир) у папці рішення на нову назву.

  5. У файлі .sln перейменуйте старе ім'я на нове ім'я.

  6. Видалити старі файли .suo (приховано)

  7. Запустіть проект VS та завантажте проект

  8. Проект -> властивості -> змінити ім'я складання та простір імен за замовчуванням на нове ім'я.


0

Я знаю, що це досить пізно, але для тих, хто хоче це зробити з цього моменту, я сподіваюся, що ця відповідь виявляє допомогу. Якщо у вас встановлена CodeRush Express( безкоштовна версія та "must have"), вона пропонує простий спосіб змінити широкий простір імен для проекту. Ви просто помістіть курсор на простір імен, який ви хочете змінити, і він відобразить smart tag(синє поле) під namespaceрядком. Ви можете натиснути це поле або натиснути Ctrl +клавіші, щоб побачити цю Renameопцію. Виберіть його та введіть нову назву для простору імен для проекту, натисніть Applyта виберіть місця, які ви хочете змінити, у новому діалоговому вікні та OKйого. Готово! :-)


На мій досвід CodeRush Express - це не «обов'язково мати» (особиста думка). Це зручно для таких речей.
Маартен

0

Коли я хотів змінити простір імен та ім'я рішення, я зробив наступне:
1) змінив простір імен, вибравши його та перейменувавши його, і я зробив те саме з назвою рішення
2) натиснув на лампочку та перейменував усі екземпляри старого простору імен
3 ) видалили всі проекти з рішення
4) закрили візуальну студію
5) перейменували всі проекти в Windows Explorer
6) відкрили візуальну студію і знову додали всі проекти
7) перейменували простори імен у всіх проектах у своїх властивостях
8) видалили папку бін ( з усіх проектів)
9) побудувати проект заново

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.