it-swarm.com.ru

Как переименовать папку проекта из Visual Studio?

Мое текущее решение для переименования папки проекта:

  • Удалить проект из решения.
  • Переименуйте папку вне Visual Studio.
  • Повторно добавьте проект к решению.

Есть ли лучший способ?

578
andersjanmyr

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


Чтобы переименовать папку проекта , файл (.*proj) и отображаемое имя в визуальной студии:

  • Закройте решение.
  • Переименуйте папку (и) вне Visual Studio. (Переименовать в TFS при использовании контроля версий)
  • Откройте решение, игнорируя предупреждения (ответьте "нет", если будет предложено загрузить проект из системы контроля версий).
  • Просмотрите все недоступные проекты и ...
    • Откройте окно свойств проекта (выделите проект и нажмите Alt+Enter или же F4или щелкните правой кнопкой мыши> свойства).
    • Задайте для свойства ' путь к файлу "новое местоположение.
      • Если свойство недоступно для редактирования (как в VS2012), откройте файл .sln непосредственно в другом редакторе, например Notepad ++, и обновите пути к нему. (Вам может понадобиться сначала проверить решение в TFS и т.д.)
    • Перезагрузить проект - щелкните правой кнопкой мыши> перезагрузить проект.
    • Измените отображаемое имя проекта, выделив его и нажав F2или щелкните правой кнопкой мыши> переименовать .

Примечание: Другие предлагаемые решения, включающие удаление и повторное добавление проекта в решение, будут нарушать ссылки на проекты.

Если вы выполните эти шаги, вы можете также переименовать следующее, чтобы соответствовать:

  1. Сборочный
  2. Default/Root Namespace
  3. Пространство имен существующих файлов (используйте инструменты рефакторинга в Visual Studio или инструмент противоречивых пространств имен ReSharper)

Также рассмотрите возможность изменения значений следующих атрибутов сборки :

  1. AssemblyProductAttribute
  2. AssemblyDescriptionAttribute
  3. AssemblyTitleAttribute
697
andersjanmyr

Есть другой способ сделать это, используя файлы * .sol, * csproj.

  1. откройте файл вашего решения 
  2. найдите * .csproj, который вы хотите изменить
  3. это будет так (относительно файла * .sol): 

    Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Shani.Commands.Impl", "Shani.Commands.Impl\Shani.Commands.Impl.csproj", "{747CFA4B-FC83-419A-858E-5E2DE2B948EE}"

  4. и просто измените первую часть на новую директорию, например:

    Impl\Shani.Commands.Impl\Shani.Commands.Impl.csproj

  5. конечно, не забудьте переместить весь проект в этот каталог

Повеселись.

82
rabashani

Это прямо вперед в VS 2015 (возможно, работает в более старых версиях)

  1. В обозревателе решений щелкните правой кнопкой мыши Main solution > Rename
  2. В обозревателе решений щелкните правой кнопкой мыши на project (under solution) > Rename
  3. В обозревателе решений дважды щелкните или щелкните правой кнопкой мыши вкладку приложения Properties >goto, переименуйте Assembly name и Default namespace для соответствия.
  4. Если вы также хотите переименовать пространство имен, откройте один из ваших файлов классов. Щелкните правой кнопкой мыши namespace > Rename..., это должно найти и заменить все ссылки на ваше пространство имен по всему проекту.
  5. Закройте проект> переименуйте project folder.
  6. Отредактируйте файл .sln в блокноте, измените путь к cjproj. т.е. fu\bar.csproj --> bar\bar.csproj
67
wired00

Человек, я боролся с этим. К сожалению, в Visual Studio нет решения одним щелчком мыши, но если вы работаете Visual Studio 2012 и ваш проект находится под контролем исходного кода с помощью Team Foundation Server , вот как я заставил его работать , сохраняя при этом историю источника:

(Обязательно прочитайте комментарий @ mjv ниже, так как он отмечает, что вы можете пропустить шаги 5-10)

  1. Убедитесь, что вы отметили все изменения, поэтому у вас нет ожидающих изменений.
  2. Удалите проект из решения, щелкнув правой кнопкой мыши и выбрав Remove.
  3. Теперь в проводнике Windows переименуйте папку проекта.
  4. Вернитесь в Visual Studio и в обозревателе решений щелкните правой кнопкой мыши решение и выберите Add -> Existing project. Выберите файл проекта для проекта, который вы удалили на шаге 2, который должен находиться в переименованной папке.
  5. Теперь проект вернулся в решение, но проект, похоже, не добавлен в систему контроля версий. Чтобы это исправить, откройте Source Control Explorer.
  6. Найдите папку проекта в Source Control Explorer, которая соответствует папке проекта на вашем диске, которую вы переименовали в шаге 3.
  7. Переименуйте папку в Source Control Explorer, чтобы она имела то же имя, что и папка проекта на диске.
  8. Теперь взгляните на ожидающие изменения. У вас должны быть изменения в файле решения и операция переименования в папке проекта.
  9. Сделайте перестройку и убедитесь, что все компилируется правильно. Если у вас были межпроектные ссылки на проект, который вы переименовали, вам нужно снова добавить их в отдельные проекты, которые ссылались на него.
  10. Вы должны быть все готово сейчас. Иди и проверить все в.

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

Если у вас все еще есть проблемы, убедитесь, что вы ничего не изменили вручную в файле решения, или попробуйте другие «хитрости», прежде чем пытаться выполнить описанные выше шаги. Если вы что-то изменили и отметили это, вы можете рассмотреть возможность отката до того момента, когда вы начали возиться с переименованием проекта.

Конечно, вы также хотите переименовать сам проект в Solution Explorer. Вы можете сделать это до описанных выше шагов, но в этом случае убедитесь, что вы отметили это изменение, прежде чем применять вышеуказанные шаги. Вы также можете сделать это позже, но сначала убедитесь, что вы выполнили все шаги, описанные выше, и проверьте изменения, прежде чем пытаться переименовать имя проекта в обозревателе решений. Я не рекомендую пытаться смешивать вышеперечисленные шаги с переименованием имени проекта в обозревателе решений. Хотя это может сработать, но я бы порекомендовал сделать это в 2 отдельных наборах изменений.

48
René

В настоящее время нет. Ну, на самом деле вы можете щелкнуть по сломанному узлу проекта и на панели свойств найти свойство «Путь», затем щелкнуть небольшой значок обзора и выбрать новый путь.

Вуаля :)

31
mortenbpost

Более простое решение заключается в следующем:

  1. Щелкните правой кнопкой мыши проект и переименуйте его.
  2. (необязательно) Откройте настройки свойств проекта и измените имя сборки (и, возможно, пространство имен по умолчанию), чтобы использовать новое имя проекта.
  3. (необязательно) Выберите имя пространства имен в исходном файле, щелкните правой кнопкой мыши и выберите «Refactor\Rename», чтобы глобально переименовать пространство имен в новое имя проекта.
  4. (необязательно) Откройте файл AssemblyInfo.cs и измените имя сборки для соответствия. 
  5. Сохраните и закройте решение.
  6. С помощью проводника Windows переименуйте папку проекта в новое имя.
  7. Откройте файл SLN в текстовом редакторе, найдите одну ссылку на путь проекта и измените его, чтобы использовать новое имя папки.

Есть 4 необходимых шага, но 7 рекомендуется. В конце дня проект переименован полностью. Технически, имя папки для проекта не обязательно должно соответствовать самому проекту, поэтому даже этот шаг не является обязательным, но он может сбить с толку, если они не совпадают. То же самое для имен сборки и пространства имен.

25
Md. Shafiqur Rahman

В ответе andersjanmyr проще сначала переименовать проект.

  1. Переименовать проект.
  2. Закройте решение (сохраните его).
  3. Переименуйте папки вне Visual Studio.
  4. Откройте решение, игнорируя предупреждения.
  5. Просмотрите все недоступные проекты и установите для свойства 'Путь к файлу' новое местоположение файла вашего проекта, то есть someproject.csproj.
  6. Перезагрузите проект.

Кроме того, после выполнения этих шагов вы можете переименовать другие ссылки на имя вашего старого проекта.

В свойствах проекта обновите Имя сборки и Пространство имен по умолчанию . Это обновит следующее в файле проекта ...

<RootNamespace>SomeProjectName</RootNamespace>
<AssemblyName>SomeProjectName</AssemblyName>

... и избавится от ошибки "Пространство имен не соответствует расположению файла, должно быть: 'SomeProjectName'"

Переименуйте ваше корневое пространство имен (если у вас есть инструмент для повышения резкости, щелкните правой кнопкой мыши на Пространстве имен и выберите Refactor -> Rename).

Измените все вхождения вашего старого имени проекта в AssemblyInfo.cs

8
CRice

Для VS2017 вы можете использовать мое расширение Visual Studio

скачать

Это переименует проект в:

  • папка расположения проекта
  • файл решения
  • ссылка в других проектах
  • Название сборки, информация
  • пространство имен по умолчанию
8
Kuanysh

Я просто должен был сделать это сам (используя VS2010). Как ответили некоторые люди, самый простой шаг выглядит следующим образом:

  1. Закройте проект VS.
  2. Откройте файл .sln и переименуйте префикс каталога проекта для каждого вхождения .csproj.
  3. Сохраните файл .sln
  4. Переименуйте фактический каталог папки проекта на вашем жестком диске, чтобы соответствовать вашим изменениям в файле .sln.
  5. Откройте .sln (в VS) и пересоберите
6
John Im

Проверенное решение для расширения Visual Studio для инструментов данных для бизнес-аналитики (SSDT-BI 2013):

  1. Переместите папку Project в новое место (пока ничего не переименовывайте)
  2. В обозревателе решений переименуйте проект/решение.
  3. Закройте (и сохраните) недавно переименованный проект.
  4. Переименуйте папку проекта и файл .sln.
  5. Используйте текстовый редактор и откройте недавно переименованный файл решения проекта (.sln) (я использовал Notepad ++)
  6. В строке № 6 вы увидите: "Project {fdjfksdjk4387! ...} =" OLDPROJECT "," OLDFOLDER\OLDPROJECT.rptproj ". Переименуйте все, используя новые имена, использованные в шаге 4. (т.е. ... =" NEWPROJECT " "," NEWFOLDER\NEWPROJECT.rptproj "...)
  7. Это оно!

Проверено на 100% и безупречно сработало на моем деле.

ПРИМЕЧАНИЕ. Невозможно подтвердить, работает ли он в разных шаблонах проектов или версиях Visual Studio. Как всегда, сделайте резервную копию всего заранее.

4
user3285866

См. Пункт 3 в связанной статье.

  1. Закройте решение и IDE.
  2. В проводнике: измените имя каталога на новое имя.
  3. В Проводнике: Откройте файл .sln с помощью текстового редактора.
  4. Измените имя каталога на новое имя и сохраните.
  5. Перезапустите IDE и откройте решение из меню «Файл», «Последние файлы», если оно не запустится автоматически.
  6. Нажмите на папку Project в Solution Explorer и проверьте свойство пути в свойствах внизу. Теперь он будет ссылаться на новую папку проекта.

Это сработало для меня.

4
Jim Lewis

Хотя на этот вопрос уже был дан ответ, я хотел бы поделиться своим подходом к решению этой проблемы. У меня часто возникала одна и та же проблема переименования проекта в VS и редактирования имени папки, имени проекта и файла .sln для достижения этой цели. Я только что написал VBScript, который выполняет все это. Вы должны быть осторожны со строками, которые вы выбираете для замены.

Правка: вам просто нужно поместить файл .vbs в тот же каталог, что и файл .sln решения.

'Script parameters'
Solution = "Rename_Visual_Studio_Project" '.sln'
Project = "Rename_Visual_Studio_Project" '.csproj'
NewProject = "SUCCESS"

Const ForReading = 1
Const ForWriting = 2

Set objFso = CreateObject("Scripting.FileSystemObject")
scriptDirr = objFso.GetParentFolderName(wscript.ScriptFullName)

'Rename the all project references in the .sln file'
Set objFile = objFso.OpenTextFile(scriptDirr + "\" + Solution + ".sln", ForReading)
fileText = objFile.ReadAll
newFileText = Replace(fileText, Project, NewProject)
Set objFile = objFSO.OpenTextFile(scriptDirr + "\" + Solution + ".sln", ForWriting)
objFile.WriteLine(newFileText)
objFile.Close

'Rename the .csproj file'
objFso.MoveFile scriptDirr + "\" + Project + "\" + Project + ".csproj", scriptDirr + "\" + Project + "\" + NewProject + ".csproj"

'Rename the folder of the .csproj file'
objFso.MoveFolder scriptDirr + "\" + Project, scriptDirr + "\" + NewProject
2
Valkyrias

Я написал небольшой инструмент, который автоматизирует все эти шаги. Также поддерживает Subversion на данный момент. 

Информацию о текущих выпусках можно найти здесь Visual Studio Project Renamer Infos

Последние выпуски теперь можно загрузить с Страница загрузки Visual Studio Project Renamer

Обратная связь высоко ценится.

2
Razer

Что сработало для меня в 2017 году:

  • Закрыть решение VS
  • Переименован каталог проектов в решении .
    • (Push change in source control - git в моем случае)
  • отредактируйте файл sln в текстовом редакторе (за пределами VS2017), изменив имя каталога.
  • Вновь открыть решение в VS

Там говорилось что-то вроде " повторное добавление проекта ", я перестроил все, и все было хорошо.

2
Charles Plager

@ andersjanmyr Решение: вы можете нажать Alt + Enter, чтобы открыть страницу свойств для недоступного проекта и установить там свойство «Путь к файлу»; поскольку он недоступен в контекстном меню, вызываемом правой кнопкой мыши, недоступного проекта (в VS2008).

2
Ujjwal Singh

ПРИМЕЧАНИЕ. Это исправление для Visual Studio 2008, но оно должно работать здесь.

  1. С помощью проводника Windows переименуйте обе папки решений (родительскую и дочернюю) в новое имя решения.
  2. Удалите файл .sln, расположенный в родительской папке.
  3. В Visual Studio выберите Файл | Открыть проект.
  4. Разверните новую папку, которую вы только что переименовали, и откройте файл .csproj (расположенный в дочерней папке).
  5. Щелкните правой кнопкой мыши имя проекта и переименуйте его в то, что вы хотите. (Должно совпадать с именем папки на шаге 1.)
  6. Выберите Файл | Закрыть решение. Диалог спросит, хотите ли вы сохранить изменения в файле .sln. Нажмите Да.
  7. В диалоговом окне «Сохранить файл как» укажите на недавно переименованную папку «PARENT» и нажмите «Сохранить» (ПРИМЕЧАНИЕ. Убедитесь, что файл .sln имеет то же имя, что и папка. Не требуется, но поддерживает согласованность.) 

СДЕЛАННЫЙ.

1
Robo A GoGo

Недавно мы загрузили бета-версию бесплатного расширения VS, которое делает это за вас Посмотрите на галерею VS: Загрузка галереи

1
user3652868
  1. Переименуйте проект в решение и папку проекта

  2. Удалить проект из решения

  3. Добавить существующий проект в решение (ваш переименованный проект)

Меня устраивает. TFS также будет отслеживать новый проект.

1
Vlad

Ну, я сделал это по-своему

  • Закрыть Visual Studio 2012
  • Переименуйте ваш подкаталог в предпочтительное имя в .sln
  • Удалить файл * .suo
  • Снова откройте решение, исправьте все свойства загруженных проектов, чтобы соответствовать имени нового подкаталога.
1
ageroh

При использовании TFS, шаг 2 - переименовать папку в системе контроля версий, а затем получить последнюю версию перед повторным открытием решения.

1
Amy Patterson

Для тех, кто использует Visual Studio + git и хочет сохранить историю файлов (работает с переименованием как проектов, так и/или решений):

1) Закрыть Visual Studio

2) В файле .gitignore дублируйте все игнорируемые пути проекта, которые вы хотите переименовать, с переименованными версиями этих путей.

3) Используйте команду git move:

git mv <old_folder_name> <new_folder_name>

См. Документацию для дополнительных опций: https://git-scm.com/docs/git-mv

4) В вашем файле .sln: найдите строку, определяющую ваш проект, и измените имя папки в пути. Строка должна выглядеть примерно так:

Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "<Project name>", "<path-to-project>\<project>.csproj"

5) Откройте Visual Studio, щелкните правой кнопкой мыши по проекту -> Переименовать

6) Впоследствии переименуйте пространства имен . Я читал, что у resharper есть несколько вариантов для этого. Но простой поиск/замена сделал работу за меня.

7) Удалить старые пути .gitignore

1
ivke

Откройте .sln в текстовом файле и в следующей строке измените имя новой папки Project ("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Ricky", "\ .csproj", "{ 021CC6B0-8CFB-4194-А103-C19AF869D965}»

0
Hasala Senevirathne

После изменения имени папки откройте файл .sln в блокноте и измените путь на новый.

0
LastTribunal

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

Для этого я создал проект, чтобы сделать именно это. Приложение также пытается игнорировать папки контроля версий, такие как .git, .svn и файл настроек .vs. Больше информации в README.

https://github.com/garethrbrown/vs-project-rename

Example

0
gb2d

Самый простой способ - перейти к свойству окна, изменить имя пространства имен по умолчанию, после чего переименование будет сделано. 

0
hjbjh

Я сделал следующее:

  1. Переименуйте проект изнутри vs2013. (необязательно/не нужно)

  2. Экспортируйте проект как шаблон. 

  3. Закройте решение.

  4. Откройте решение 

  5. Создайте проект из сохраненного шаблона и используйте имя, которое вам нравится.

  6. Удалите из решения Explorer предыдущий проект. 

В этот момент я попытался скомпилировать новое решение, и для этого мне пришлось вручную скопировать некоторые ресурсы и заголовки в новую папку проекта из старой папки проекта. Делайте это, пока он не скомпилируется без ошибок. Теперь этот новый проект сохранил файл «. Exe» в предыдущую папку. * 

Итак ->

  1. Перейдите в Windows Explorer и вручную скопируйте файл решения из старой папки проекта в новую папку проекта.

  2. Закройте решение и откройте решение из нового проекта.

  3. При необходимости изменили конфигурацию обратно на (x64).

  4. Удалите папку проекта со старым именем из папки решения.

0
user5141040

Или просто

Скопируйте все коды, затем откройте новый проект с нужным именем и вставьте код. Запустите debug и затем удалите предыдущий проект. Готово!

Это сработало для меня!

0
user10074310

Я использую VS 2013 и TFS 2013.

Я сделал это так:

  1. Откройте Visual Studio, не открывая само решение, и используйте Source Control Explorer для поиска и переименования папок для проектов.
  2. Дважды щелкните файл решения в Source Control Explorer, чтобы открыть решение.
  3. У вас возникает вопрос: «Недавно в это решение были добавлены проекты. Хотите получить их из системы контроля версий?», И вы выбираете «Да».
  4. Теперь есть папка и структура проекта, а теперь файлы, так что теперь вы получаете последнюю версию из системы контроля версий.
  5. Попробуйте создать и зафиксировать изменения.
0
Muris

Существует более простой подход, который был протестирован в VS 2013 Update 1 и применим для проектов, связанных с TFS:

  • Откройте VS, но пусть решение закрыто
  • Откройте Source Explorer и переименуйте нужную папку (решение будет закрыто для вас, если вы еще не закрыли его сначала)
  • Щелкните правой кнопкой мыши по решению (также из Source Explorer) и выберите пункт регистрации.
  • Откройте решение, вам сообщат, что добавлены новые проекты, примите изменения.
  • Удалите проект из решения и добавьте его снова, затем зарегистрируйтесь
  • Проверьте, что внутренние ссылки в порядке
0
Mohamed Emad

1-Переименуйте проект вне VS . 2-отредактируйте your_project_name.sln в текстовом редакторе, переименуйте путь в новый путь

0
user1062770

Подобные проблемы возникают, когда необходимо создать новый проект, и вы хотите, чтобы имя папки проекта отличалось от имени проекта.

Когда вы создаете новый проект, он сохраняется в

./path/to/pro/ject/YourProject/YourProject.**proj

Предположим, вы хотели, чтобы он был прямо в папке ject:

./path/to/pro/ject/YourProject.**proj

Мой обходной путь для достижения этой цели - создать проект с последней частью пути в качестве имени, чтобы он не создавал дополнительный каталог:

./path/to/pro/ject/ject.**proj

Теперь, когда вы переименовываете проект из Visual Studio, вы достигаете цели, не покидая VS:

./path/to/pro/ject/YourProject.**proj

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

0
Etan