Правильний спосіб перейменування рішення (та каталогів) у Visual Studio


415

У мене досить задіяне рішення Visual Studio (2010, але це не має значення), що мені потрібно перейменувати.

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

Чи існує офіційний спосіб зробити це? Як варіант (і набагато менш бажано), чи є вільні інструменти для цього?



13
Як це дублікат? Він просить перейменувати рішення, а не проект!
Вікінг

Відповіді:


375

Редагуйте .sln файл вручну

Цей метод цілком спрямований на перейменування каталогу для проекту, як його переглядають у Windows Explorer.

Цей метод не страждає від проблем у методі Видалити / додати проектний файл нижче (зникнення посилань), але він може спричинити проблеми, якщо ваш проект знаходиться під контролем джерела (див. Примітки нижче). Ось чому крок 2 (резервне копіювання) є таким важливим.

  1. Закрити Visual Studio.
  2. Створіть резервну копію .sln-файлу (ви завжди можете його відкатати).
  3. Уявіть , що ви хочете перейменувати каталог Project1в Project2.
  4. Якщо ви не використовуєте керування джерелом, перейменуйте папку з Project1на Project2провідник Windows.
  5. Якщо ви використовуєте керування джерелом, перейменуйте папку з Project1на Project2використання функцій, наданих керуванням джерелом. Це зберігає історію файлу. Наприклад, за допомогою TortoiseSVNклацання правою кнопкою миші на файл виберіть TortoiseSVN .. Rename.
  6. У .sln файл, редагувати всі екземпляри Project1бути Project2, з допомогою текстового редактора , як NotePad .
  7. Перезапустіть Visual Studio, і все буде працювати, як і раніше, але з проектом в іншому каталозі.

Ви також можете побачити рішення щодо перейменування вручну або опублікувати, де описано цей посібник .

Переваги

  • Ви можете зробити каталог у Windows Explorer відповідно до назви проекту в рамках рішення.
  • Цей метод не видаляє жодних посилань з інших проектів на цей файл (перевага перед методом Видалити / додати проектний файл , див. Мою іншу відповідь нижче).

Попередження

  • Важливо створити резервне копіювання всього у .zip-файл, перш ніж щось перейменувати, оскільки цей метод може створювати проблеми з контролем джерела.
  • Якщо ваш проект знаходиться під контролем джерела, він може створювати проблеми, якщо ви перейменовуєте файли або каталоги поза контрольним джерелом (за допомогою Провідника Windows). Бажано перейменувати файл, використовуючи сам файл управління джерелом , якщо ви можете, щоб зберегти історію цього файлу (перевірте контекстне меню правою кнопкою миші - він може мати функцію перейменування файлу).

Оновлення 2014-11-02

ReSharper додав автоматизований метод для досягнення того ж результату, що і ручний метод вище. Якщо простір імен підкреслено чітко синьою лінією, клацніть піктограмою піраміди дії на будь-який:

  • Перейменуйте простір імен, щоб відповідати імені каталогу в Провіднику Windows, або;
  • Перейменуйте каталог у Windows Explorer, щоб він відповідав простору імен.

У другому випадку остаточне слово визначає нове ім’я каталогу в Провіднику Windows, наприклад, якщо ми змінили простір імен ViewModel2, він запропонував би перемістити файл у папку ViewModel2.

Однак це не обов'язково оновлюватиме файли в керуванні джерелами, тому, можливо, доведеться використовувати ручний метод.

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

Оновлення 2018-01-31

Тестовано з Visual Studio 2008, 2010, 2012, 2013, 2015, 2017, оновлення 1, 2, 3, 4, 5.

Оновлення 2020-05-02

Тестовано з Visual Studio 2019.


2
зауважте: навіть із VS2012 потрібно перезапустити, бо в іншому випадку це може заплутатися і ви отримаєте дурні помилки
Simon_Weaver

1
"Якщо у вас є керування джерелом, ви втратите історію файлу", це для нас є головним недоліком (аудит тощо), чи пропонуються маршрути, зберігаючи історію?
dougajmcdonald

23
Visual Studio - це така потужна програма, але ця функція не включена? вау ..
Лука Стіб

2
Навіть після виконання рішення, описаного @Contango, у мене все-таки з'явилася помилка: атрибут OwinStartup виявив в зборах ... запуск нового імені, яке суперечило старому імені. Я пройшов папки obj і bin та видалив будь-який файл зі старим іменем, залишивши все іншим недоторканим. Пережив проти мого нещодавно названого проекту, і він пробіг як шарм! Спасибі!
nocturns2

2
@LucaSteeb Yup, за повідомленнями, у 2012 році було близько 50 мільйонів рядків коду. #monolithic
Chiramisu

158

Ось такі кроки, які потрібно виконати, щоб перейменувати рішення:

  1. У Провіднику рішень клацніть правою кнопкою миші проект, виберіть Перейменувати та введіть нове ім’я.
  2. У Провіднику рішень клацніть правою кнопкою миші проект та виберіть Властивості. На вкладці "Програма" змініть "Назва збірки" та "Простір імен за замовчуванням".
  3. У головному файлі cs (або будь-яких інших файлах коду) перейменуйте декларацію простору імен, щоб використовувати нове ім'я. Для цього клацніть правою кнопкою миші область імен та виберіть Refactor> Rename введіть нове ім'я. Наприклад: namespace WindowsFormsApplication1
  4. Змініть AssemblyTitle і AssemblyProduct у Властивості / AssemblyInfo.cs.

    [assembly: AssemblyTitle("New Name Here")]
    [assembly: AssemblyDescription("")]
    [assembly: AssemblyConfiguration("")]
    [assembly: AssemblyCompany("")]
    [assembly: AssemblyProduct("New Name Here")]
    [assembly: AssemblyCopyright("Copyright ©  2013")]
    [assembly: AssemblyTrademark("")]
    [assembly: AssemblyCulture("")]
    
  5. Фізично видаліть каталоги bin та obj.

  6. Перейменуйте каталог фізичної папки проекту.

  7. Відкрийте файл SLN (у блокноті чи будь-якому редакторі) та змініть шлях до проекту.

  8. Очистити та відновити проект.


1
Це прекрасно працює! Але вам потрібно керувати Datasetвручну (якщо ви долучилися до свого проекту).
Sujith HS

2
Працює! Мені також довелося перейменувати файли .sln та .suo. І я виявив, що крок 4 був уже виконаний одним із попередніх кроків у моєму VS 2010
Патчі

3
Мене трохи бентежить питання про те, чи ви посилаєтесь на Рішення чи Проект на кроці 1. Я хочу перейменувати обидва, кожен з іншим ім’ям. Яким буде новий простір імен, нове ім’я рішення чи назва проекту? Дякую, що мені це пояснили.
Алан Фішер

1
Це працювало і для мене (використовуючи VS2013), але воно пропустило шляхи до проекту у \Packages\repositories.configфайлі.
Тед

1
Перш ніж спробувати повторно відкрити рішення, я використовував інструмент пошуку, агент Ransack, для пошуку всіх файлів і папок для будь-якої посилання на попереднє ім'я рішення / проекту та виправлення їх. Мені потрібно було це зробити кілька місць.
Енді Г

31

Операції перейменування у візуальній студії змінюють лише ім'я файлу, тобто для проекту, * .prj та рішення * .sln. Вам потрібно буде перейменувати папки окремо за допомогою файлової системи, і вам потрібно буде видалити та перечитати проекти, оскільки вони матимуть нові імена папок. Однак зауважте, що файли рішення та проекту - це файли texst та xml. Ви можете написати власну програму, яка їх розбирає та перейменовує як імена папок, імена файлів, так і внутрішньо фіксує файли проекту / рішення.


1
Чи доступні безкоштовні інструменти, які вже роблять це? Я нічого не міг знайти.
Девід Пфеффер

5
Єдине, що може вам допомогти, це CoolCommands 4.0 "Додавання проектів із папки", щоб після видалення / перейменування папок проекту ви змогли додати їх усі одразу: shartoolbox.com/tools/coolcommands
AaronLS

1
у піднесеному тексті 2 є функції пошуку і заміни регулярних виразів, які полегшують справу з цим.
jfyelle

22

Ви також можете експортувати шаблон, а потім створити новий проект із експортованого шаблону, змінюючи назву, як вам зручніше


1
Це працювало і для мене. Мені довелося зробити одне регулювання. Я використовував структуру сутності у веб-додатку, і він залишив старі файли .dll під оригінальною назвою проекту, тому мені довелося шукати, чому я отримую певний тип повторюваної помилки для класів таблиць. Як тільки я вилучив їх із проекту, він спрацював чудово. Сподіваємось, це допомагає. І дякую, Едоардо!
Стів

2
Це абсолютно найкращий спосіб зробити це, зверніться до msdn.microsoft.com/en-us/library/…, щоб побачити, куди перемістити експортований шаблон, щоб знайти його у діалоговому вікні "Новий проект".
Ares Ou

13

Нижче наведено покроковий спосіб перейменування всього вашого рішення у Visual Studio 2013

Припустимо, що ми змінюємо проект під назвою "HelloWorld.ui" на "Section1to5.ui"

  1. Перейдіть до провідника рішень (скріншот нижче), клацніть правою кнопкою миші на проект, який потрібно перейменувати, та виберіть "Перейменувати". Введіть нове ім'я, яке ви хочете.

Скріншот рішення провідника

  1. Клацніть правою кнопкою миші проект, який ви щойно перейменували, та натисніть "Властивості". На вкладці "Програма" змініть "Назва збірки" та "Простір імен за замовчуванням".

  2. У головному файлі Program.cs (або будь-який інший файл коду, який ви могли створити), перейменуйте декларацію простору імен, щоб використовувати нове ім’я. Для цього клацніть правою кнопкою миші область імен та виберіть Refactor> Rename введіть нове ім'я. Наприклад:

    простір імен HelloWorld.ui ----> простір імен Section1to5.ui

  3. Далі розгорніть "Властивості" і двічі клацніть на файл AssemblyInfo.cs. Ви помітите наведений нижче фрагмент коду:

[assembly: AssemblyTitle("HelloWorld.ui")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("Microsoft")]
[assembly: AssemblyProduct("HelloWorld.ui")]
[assembly: AssemblyCopyright("Copyright © Microsoft 2015")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]

Вам потрібно змінити AssemblyTitle і AssemblyProduct у властивостях / AssemblyInfo.cs на нову назву, у цьому прикладі з "HelloWorld.ui" на "Section1to5.ui". Після закінчення зміни імені збережіть і закрийте Visual Studio.

  1. У каталозі проектів перейдіть до папки "HelloWorld.ui" та видаліть каталоги "bin" та "obj".

  2. Після завершення перейменуйте папку "HelloWorld.ui" на нову назву проекту.

  3. Відкрийте файл перейменованого рішення за допомогою текстового редактора, такого як «Блокнот» або «Блокнот ++» та відредагуйте наступний рядок:

    Project ("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HelloWorld.ui", "HelloWorld.ui \ HelloWorld.ui.csproj", "{39FC65A3-3AE7-4EC9-B8F7-74F971636C70}"

Замініть всі екземпляри "HelloWorld.ui" новим ім'ям, яке ви вибрали для свого проекту, у цьому випадку "Section1to5.ui". Це змінює шлях проекту до перейменованого каталогу на етапі 6.

  1. Відкрийте файл рішень у візуальній студії та очистіть та відновіть проект.

  2. Ви можете помітити, що кнопку «Налагодження / запуск» була замінена кнопкою «Прикріпити». Якщо це трапиться, просто клацніть правою кнопкою миші на проект і виберіть опцію «Встановити як проект для запуску». Крім того, натисніть на Інструменти> Налаштувати> Команди> Додати команду> Налагодити і додати кнопку.

Ви перейменували проект, якщо у вас виникли сумніви, не соромтеся розміщувати повідомлення, і я б радий допомогти!


6

Видаліть підпапки bin та obj, щоб видалити набір невірних посилань, а потім використовуйте Windows для пошуку старого імені.

Відредагуйте будь-який код або файли XML, знайдені та відновіть, зараз має бути добре.


5

Я використовував розширення Visual Studio "Проект повного перейменування" для успішного перейменування проектів у рішенні ASP.NET Core 2.

Тоді я використовував ReSharper для налаштування простору імен (клацніть правою кнопкою миші на проект, рефактор, коригування просторів імен ...)

https://github.com/kuanysh-nabiyev/RenameProjectVsExtension

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


Схоже, він перемістився сюди: github.com/kuanysh-nabiyev/RenameProjectVsExtension
ToastedSoul


4

Я спробував програму Visual Studio Project Renamer, але він викинув винятки в кількох випадках, коли я спробував це.

Я мав добрий успіх із CopyWiz .

Я жодним чином не пов’язаний з ними, і я ще не заплатив за це, але, можливо, мені доведеться незабаром, оскільки це єдиний інструмент, який, здається, працює як для моїх C #, так і для C ++ проектів. Я сподіваюся, що вони заробляють трохи грошей, і продовжують вдосконалювати їх.


4

Видалити / додати метод файлу проекту

Цей метод цілком спрямований на перейменування каталогу для проекту, як його переглядають у Windows Explorer.

  1. Створіть резервну копію всього проекту, використовуючи щось на зразок GIT, SVN або WinZip (важливо!).
  2. У межах рішення в Visual Studio видаліть проект.
  3. Перейменуйте каталог у Windows Explorer.
  4. Знову додайте проект знову в Visual Studio.

Переваги

  • Ви можете зробити каталог у Windows Explorer відповідно до назви проекту в рамках рішення.

Недоліки

  • Якщо ви видалите бібліотеку, вона видаляє будь-які посилання на цю бібліотеку з інших проектів. Рішення може не компілюватися після цього, поки ви не додасте посилання на згадану бібліотеку назад (це досить просто). Це причина, чому крок 1 (резервне копіювання) є таким важливим.
  • Якщо у вас є керування джерелом, ви втратите історію файлу.

Клацнувши правою кнопкою миші на проект та вибравши "Відкрити папку в Провіднику Windows", корисно відстежувати, де проект зберігається під час виконання цього процесу.


4
WinZip ??? Я впевнений, що ви використовуєте реальний контроль джерела та не робите резервні копії zip-файлів свого коду. Якщо ви чи хтось, хто читає це, є тоді, будь ласка, ознайомтеся з try.github.io та надішліть його на тестовий проект. Ви не повернетесь!
Метт Кляйн

2
Я прочитав ваш коментар Містер @MattKlein, і ви мали рацію: D Дякую!
Жанкарло Фонталво

@Matt Klein Погоджуюсь, оновлено, щоб рекомендувати також GIT або SVN.
Контанго

3

Ти можеш:

  1. клацніть файл-> новий -> створити проект із існуючого проекту

  2. виберіть оригінальний файл, наприклад. рішення 1 та введіть нове рішення файлу 2

  3. змінити назву проекту в новому рішенні 2


Мені дуже подобається такий підхід, чи він з певної причини голосується?
Купи

зачинив мою машину близько до кінця - у Visual Studio 2017
klewis

3

Якщо у вас є проблеми з завантаженням спільних проектів, як-от Xamarin, не забудьте змінити посилання на спільні файли у файлах csproj. Я розробив гру CocosSharp, і проекти Droid / iOS / WP81 не хотіли завантажувати. Мені довелося змінити нижній рядок у кожному файлі csproj (Driod / iOS / WP81), який посилався на Shared lib. Це сталося через зміну назв папок, тому замініть YOUR_PREVIOUS_NAMESPACE на нові імена папок.

<Import Project="..\YOUR_PREVIOUS_NAMESPACE.Shared\EmptyProject.Shared.projitems" Label="Shared" />

Також я помітив, що для проектів .Driod назву складання у властивостях проекту неможливо змінити за допомогою візуальної студії (я використовую 2015). Мені довелося змінити назву збірки вручну у файлі .Droid.csproj.

<AssemblyName>YourNameSpace</AssemblyName>

Потім я завантажив рішення і в перегляді властивостей проекту з'явилося нове ім'я. Після перебудови dll з цим ім'ям було сформовано.


2

Якщо ви створюєте веб-сайт у Visual Studio 2010. Ви можете змінити назву проекту наступним чином.

Крок 1: У Visual Studio 2010 файл SLN буде зберігатися у папці проекту в Visual studio 2010, а вихідні файли зберігаються в папці Веб-сайт у Visual Studio 2010.

Крок 2: Перейменуйте папку, натиснувши правою кнопкою миші на ту папку вперед, перейменуйте назву, яка містить ваш проект SLN.

Крок 3: Перейменуйте ім'я файлу SLN, клацнувши правою кнопкою миші на цьому файлі SLN вперед шляхом Перейменування.

Крок 4: Перейменуйте папку, яка містить джерело цього файлу SLN, під веб-сайтом у Visual Studio 2010.

Крок 5: Потім, нарешті, двічі клацніть файл SLN та змініть корінь папки джерела SLN.


2

Єдине рішення, яке працює для мене на Visual Studio 2013 в WEB-проекті:

Скажімо, я хочу перейменувати "project1" на "project2". Скажімо, фізичний шлях до мого .sln-файлу: c: \ my \ path \ project1 \ project1.sln

тому шлях до мого .csproj-файлу, а також до папки bin та obj повинен бути: c: \ my \ path \ project1 \ project1 \

  1. Відкрийте рішення в VS, двічі клацнувши файл project1.sln.

  2. У Провіднику рішень клацніть правою кнопкою миші проект (НЕ рішення !!!), виберіть Перейменувати та введіть нову назву.

  3. У Провіднику рішень клацніть правою кнопкою миші проект та виберіть Властивості. На вкладці "Програма" змініть "Назва збірки" та "Простір імен за замовчуванням".

  4. У головному CS-файлі (або будь-якому іншому файлі коду, наприклад Global.asax) перейменуйте декларацію простору імен, щоб використовувати нове ім'я. Для цього клацніть правою кнопкою миші область імен та виберіть Refactor> Rename введіть нове ім'я. Наприклад:

проект імені простору1

4.1 У Провіднику рішень клацніть правою кнопкою миші проект (НЕ рішення !!!), виберіть Перейменувати та введіть нову назву.

  1. Переконайтесь, що AssemblyTitle і AssemblyProduct у властивостях / AssemblyInfo.cs встановлені на нову назву ("project2").

1 [асамблея: AssemblyTitle ("Нова назва тут")] 2 [збірка: AssemblyDescription ("")] 3 [асамблея: AssemblyConfiguration ("")] 4 [Assembly: AssemblyCompany ("")] 5 [Assembly: AssemblyProduct (" Нове ім'я тут "]] 6 [асамблея: AssemblyCopyright (" Copyright © 2013 ")] 7 [Assembly: AssemblyTrademark (" ")] 8 [Assembly: AssemblyCulture (" ")]

  1. Закрийте Visual Studio.

  2. Фізично видаліть каталоги bin та obj.

  3. Перейменуйте батьківську папку та папку-джерело на нову назву (project2):

У прикладі: c: \ my \ path \ project1 \ project1

буде: c: \ my \ path \ project2 \ project2

  1. Перейменуйте ім'я файлу SLN, клацнувши правою кнопкою миші на цьому файлі SLN вперед шляхом Перейменування.

  2. Потім нарешті відкрийте файл SLN (у блокноті чи будь-якому редакторі) та скопіюйте та замініть (Ctrl + h) будь-яке старе ім’я на нове ім’я.

  3. Відкрийте VS і натисніть BUILD -> Clean Solution

  4. натисніть Створити -> Збірка рішення, а потім F5 для запуску ...

  5. Примітка1: Якщо ви отримаєте щось подібне: Помилка компіляції CS0246: Не вдалося знайти ім'я типу або простору імен 'project2' (ви не використовуєте директиву чи посилання на збірку?)

Вихідний файл: c: \ Користувачі \ Ім'я користувача \ AppData \ Local \ Temp \ Тимчасові файли ASP.NET \ root \ 78dd917f \ d0836ce4 \ App_Web_index.cshtml.a8d08dba.b0mwjmih.0.cs

Потім перейдіть у папку "Тимчасові файли ASP.NET" і видаліть усе.

  1. Примітка2: Якщо ви намагаєтесь "зберегти як" для нового проекту з назвою, а також зберегти старий, спробуйте скопіювати свій db, змінивши connectionStrings у web.config, а також повторно запустивши міграцію, якщо у вас є проект.

2

Я новачок у VS. У мене просто була та сама проблема: мені потрібно було перейменувати розпочатий проект через пару тижнів роботи. Це те, що я зробив, і це спрацювало.

  1. На всякий випадок зробіть резервну копію вашої папки Project, хоча ви її не будете торкатися, але про всяк випадок!
  2. Створіть новий проект і збережіть його, використовуючи ім’я, яке ви хочете для свого "нового" проекту, тобто ім'я, на яке ви хочете змінити ваш "старий" проект.
  3. Побудуйте його. Після цього у вас з’явиться проект із ім'ям, яке ви хотіли, але він зовсім не має нічого, крім відкриття вікна (додаток для форм Windows у моєму випадку).
  4. Після відкриття нового проекту, натисніть на Project-> Додати існуючий Ítem та за допомогою Провідника Windows знайдіть «стару» папку Project та виберіть усі файли під ... Visual Studio xxx \ Projects \ oldApp \ oldApp
  5. Виберіть усі файли там (.vb, .resx) та додайте їх до свого «нового» проекту (того, який уже слід відкрити).
  6. Майже останнім кроком було б відкрити файл проекту за допомогою
    Провідника рішень і на 1-й вкладці змінити форму запуску за замовчуванням на форму, якою вона повинна бути.
  7. Відбудуйте все.

Можливо, більше кроків, але менше або взагалі відсутність введення тексту, лише кілька клацань миші. Сподіваюся, це допомагає :)




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