Как переименовать папку проекта из Visual Studio?
-
03-07-2019 - |
Вопрос
Моим текущим решением для переименования папки проекта является:
- Удалите проект из решения.
- Переименуйте папку за пределами Visual Studio.
- Повторно добавьте проект в решение.
Есть ли какой-нибудь лучший способ?
Решение
Пользователи TFS: Если вы используете систему управления версиями, которая требует, чтобы вы предупреждали ее перед переименованием файлов / папок, то посмотрите на этот ответ вместо этого который охватывает необходимые дополнительные шаги.
Чтобы переименовать проект папка, файл (.*proj
) и отображаемое имя в Visual Studio:
- Закройте решение.
- Переименуйте папки за пределами Visual Studio.(Переименовать в TFS, если используется система управления версиями)
- Откройте решение, игнорируя предупреждения (ответьте "нет", если вас попросят загрузить проект из системы управления версиями).
- Пройдите через все недоступен проекты и...
- Откройте свойства окно для проекта (выделите проект и нажмите Альт+Войти или F4, или щелкните правой кнопкой мыши > свойства).
- Установите свойство 'Путь к файлу- на новое место.
- Если свойство недоступно для редактирования (как в VS2012), то откройте
.sln
запишите файл непосредственно в другой редактор, такой как Notepad ++, и вместо этого обновите пути там.(Возможно, вам потребуется сначала ознакомиться с решением в TFS и т.д.)
- Если свойство недоступно для редактирования (как в VS2012), то откройте
- Перезарядить проект - щелкните правой кнопкой мыши > перезагрузить проект.
- Измените отображаемое название проекта, выделив его и нажав F2, или щелкните правой кнопкой мыши > переименовать.
Примечание: Другие предлагаемые решения, которые включают удаление, а затем повторное добавление проекта в решение, приведут к нарушению ссылок на проекты.
Если вы выполните эти действия, вы также можете рассмотреть возможность переименования следующего, чтобы соответствовать:
- Сборка
- Пространство имен по умолчанию /Root
- Пространство имен существующих файлов (используйте инструменты рефакторинга в Visual Studio или инструмент несогласованных пространств имен ReSharper)
Также рассмотрите возможность изменения следующих значений атрибуты сборки:
AssemblyProductAttribute
AssemblyDescriptionAttribute
AssemblyTitleAttribute
Другие советы
Есть другой способ сделать это, используя файлы *.sol, * csproj.
- откройте файл вашего решения
- найдите *.csproj, который вы хотели бы изменить
это будет примерно так (относительно файла *.sol):
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Shani.Commands.Impl", "Shani.Commands.Impl\Shani.Commands.Impl.csproj", "{747CFA4B-FC83-419A-858E-5E2DE2B948EE}"
и просто измените первую часть, например, на новую директорию:
Impl\Shani.Commands.Impl\Shani.Commands.Impl.csproj
конечно, не забудьте переместить весь проект в этот каталог
Получайте удовольствие.
Это прямолинейно в сравнении с 2015 годом (возможно, работает в более старых версиях)
- В обозревателе решений щелкните правой кнопкой мыши на
Main solution > Rename
- В обозревателе решений щелкните правой кнопкой мыши на
project (under solution) > Rename
- В обозревателе решений дважды щелкните или щелкните правой кнопкой мыши на
Properties >
перейти на вкладку приложения, переименоватьAssembly name
иDefault namespace
чтобы соответствовать. - Если вы также хотите переименовать пространство имен, откройте один из файлов вашего класса.Щелкните правой кнопкой мыши на
namespace > Rename...
это должно привести к поиску и замене всех ссылок на ваше пространство имен по всему проекту. - Закройте проект > переименуйте
project folder
. - Редактировать
.sln
файл в блокноте, измените путь к cjproj.т. е.fu\bar.csproj --> bar\bar.csproj
Боже, как же я боролся с этим.К сожалению, в Visual Studio нет решения в один клик, но если вы используете Visual Studio 2012 и ваш проект находится под управлением исходной версии с Сервер Team Foundation Server, вот как я заставил это работать, сохранив при этом историю исходных текстов:
(Обязательно прочтите комментарий @mjv ниже, поскольку он отмечает, что вы можете пропустить шаг 5-10)
- Убедитесь, что вы зарегистрировали все изменения, чтобы у вас не было ожидающих внесения изменений.
- Удалите проект из решения, щелкнув правой кнопкой мыши и выбрав Удалить.
- Теперь в проводнике Windows переименуйте папку проекта.
- Вернитесь в Visual Studio и в Обозревателе решений щелкните правой кнопкой мыши решение и выберите Добавить -> Существующий проект.Выберите файл проекта для проекта, который вы удалили на шаге 2, который должен находиться в переименованной папке.
- Теперь проект вернулся в решение, но, похоже, проект не добавлен в систему управления версиями.Чтобы исправить это, откройте Source Control Explorer.
- Найдите папку проекта в проводнике системы управления версиями, которая соответствует папке проекта на вашем диске, которую вы переименовали на шаге 3.
- Переименуйте папку в проводнике системы управления версиями, чтобы она имела то же имя, что и папка проекта на диске.
- Теперь взгляните на ваши ожидающие изменения.У вас должны быть внесены изменения в файл решения и выполнена операция переименования папки проекта.
- Выполните перестройку и убедитесь, что все компилируется правильно.Если у вас были межпроектные ссылки на проект, который вы переименовали, вам нужно снова добавить их к отдельным проектам, которые ссылались на него.
- Теперь у вас все должно быть готово.Иди и все проверь.
Приведенное выше руководство сработало для меня.Если у вас это не сработает, попробуйте полностью удалить свое локальное решение и удалите сопоставление папок в вашей рабочей области.Перезапустите Visual Studio на всякий случай.Убедитесь, что вы действительно удалили все решение целиком со своего компьютера.Теперь перечитайте сопоставление решения с вашей рабочей областью и получите последнюю версию.Теперь попробуйте выполнить описанные выше действия.То же самое применимо, если что-то пойдет не так при выполнении описанных выше шагов.Просто удалите свое решение локально и получите последний исходный код, и у вас будет чистый лист для работы.
Если у вас все еще возникают проблемы, убедитесь, что вы ничего не изменили вручную в файле решения или не попробовали другие "хитрости", прежде чем пытаться выполнить описанные выше действия.Если вы что-то изменили и вернули это обратно, возможно, вам захочется рассмотреть возможность выполнения отката к точке непосредственно перед тем, как вы начали возиться с переименованием проекта.
Конечно, вы также хотели бы переименовать сам проект в Solution Explorer.Вы можете сделать это до выполнения описанных выше действий, но в этом случае обязательно внесите это изменение, прежде чем применять описанные выше действия.Вы также можете сделать это позже, но сначала убедитесь, что выполнили все описанные выше шаги, и проверьте внесенные изменения, прежде чем пытаться переименовать название проекта в Solution Explorer.Я не рекомендую пытаться смешивать описанные выше шаги с переименованием названия проекта в Solution Explorer.Хотя это могло бы сработать, но я бы рекомендовал делать это в 2 отдельных наборах изменений.
В настоящее время - нет.Ну, на самом деле вы можете щелкнуть неработающий узел проекта и на панели свойств найти свойство "Путь", затем щелкнуть маленький значок обзора и выбрать новый путь.
Вуаля :)
Более простым решением является следующее:
- Щелкните проект правой кнопкой мыши и переименуйте его.
- (необязательно) Откройте настройки свойств проекта и измените имя сборки (и, необязательно, пространство имен по умолчанию), чтобы использовать новое имя проекта.
- (необязательно) Выберите имя пространства имен в исходном файле, щелкните правой кнопкой мыши и выберите Refactor ename, чтобы глобально переименовать пространство имен на новое имя проекта.
- (необязательно) Откройте файл AssemblyInfo.cs и измените имя сборки, чтобы оно соответствовало.
- Сохраните и закройте решение.
- Используя проводник Windows, переименуйте папку проекта на новое имя.
- Откройте файл SLN в текстовом редакторе, найдите единственную ссылку на путь к проекту и измените ее, чтобы использовать новое имя папки.
Есть 4 необходимых шага, но рекомендуется выполнить 7.Однако в конце концов проект полностью переименовывается.Технически, имя папки для проекта не обязательно должно совпадать с самим проектом, поэтому даже этот шаг необязателен, но это может сбить с толку, если они не совпадают.То же самое для имен сборки и пространства имен.
В ответе andersjanmyr проще сначала переименовать проект.
- Переименуйте проект.
- Закройте решение (сохраните его).
- Переименуйте папки за пределами Visual Studio.
- Откройте решение, игнорируя предупреждения.
- Просмотрите все недоступные проекты и задайте свойству "Путь к файлу" новое расположение файла вашего проекта, т.е.someproject.csproj.
- Перезагрузите проект.
Кроме того, после выполнения этих шагов вы, возможно, захотите переименовать другие ссылки в ваше старое название проекта.
В свойствах проекта обновите имя сборки и пространство имен по умолчанию.Это обновит следующее в файле проекта...
<RootNamespace>SomeProjectName</RootNamespace>
<AssemblyName>SomeProjectName</AssemblyName>
...и избавится от ошибки "Пространство имен не соответствует расположению файла, должно быть:"Имя какого-нибудь проекта""
Переименуйте свое корневое пространство имен (если у вас есть resharper, щелкните правой кнопкой мыши пространство имен и выберите Рефакторинг -> Переименовать).
Измените все вхождения вашего старого имени проекта в AssemblyInfo.cs
Для VS2017 вы можете использовать мое расширение Visual Studio
Это переименует проект в:
- папка расположения проекта
- файл решения
- ссылки в других проектах
- название сборки, информация
- пространство имен по умолчанию
Я просто должен был сделать это сам (используя VS2010).Как ответили некоторые люди, самым простым шагом, по-видимому, является:
- Закройте проект VS.
- Откройте файл .sln и переименуйте префикс каталога проекта для каждого из вхождений .csproj.
- Сохраните файл .sln
- Переименуйте фактический каталог папки проекта на вашем жестком диске в соответствии с вашими изменениями в файле .sln.
- Откройте файл .sln (в VS) и перестройте
Смотрите пункт 3 в статье по ссылке.
- Закройте решение и среду разработки.
- В Проводнике:Измените имя каталога на новое.
- В Проводнике:Откройте файл .sln с помощью текстового редактора.
- Измените имя каталога на новое и сохраните.
- Перезапустите IDE и откройте решение из меню Файл, Последние файлы, если оно не запустится автоматически.
- Щелкните папку проекта в Обозревателе решений и проверьте свойство path в свойствах внизу.Теперь он будет ссылаться на новую папку проекта.
У меня это сработало.
Проверенное решение для расширения Visual Studio для инструментов обработки данных для бизнес-аналитики (SSDT-BI 2013):
- Переместите папку проекта в новое местоположение (пока ничего не переименовывайте).
- В Обозревателе решений переименуйте Проект / Решение.
- Закройте (и сохраните) только что переименованный проект.
- Переименуйте папку проекта и файл .sln.
- Используйте текстовый редактор и откройте недавно переименованный файл решения проекта (.sln) (я использовал Notepad ++).
- В строке № 6 вы увидите:"Проект {fdjfksdjk4387!...} = "OLDPROJECT", "СТАРАЯ ПАПКА\OLDPROJECT.rptproj".Переименуйте все с новыми именами, использованными на шаге 4.(т.е....= "NEWPROJECT", "НОВАЯ ПАПКА EWPROJECT.rptproj"...)
- Вот и все!
Протестирован на 100% и безупречно работал в моем случае.
ПРИМЕЧАНИЕ:Не могу подтвердить, работает ли это в разных версиях Project templates a / o Visual Studio.Как всегда, сделайте резервную копию всего заранее.
Для тех, кто использует 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:Найдите строку, определяющую ваш проект, и измените имя папки в поле path.Строка должна выглядеть примерно так:
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "<Project name>", "<path-to-project>\<project>.csproj"
5) Откройте Visual Studio, щелкните правой кнопкой мыши на проекте -> Переименовать
6) После этого переименуйте пространства имен.Я читал, что у resharper есть несколько вариантов для этого.Но простой поиск / замена сделал эту работу за меня.
7) Удалите старые пути .gitignore
Решение @andersjanmyr от andersjanmyr:вы можете нажать Alt + Enter, чтобы открыть страницу свойств недоступного проекта и задать там свойство "Путь к файлу";поскольку он недоступен в контекстном меню с правой кнопкой мыши недоступного проекта (в VS2008).
Я написал небольшой инструмент, который автоматизирует все эти шаги.Также на данный момент поддерживает subversion.
Информацию о текущих выпусках можно найти здесь Информация о Переименовании проекта Visual Studio
Последние версии теперь можно загрузить с сайта Страница Загрузки Программы Переименования проекта Visual Studio
Обратная связь очень ценится.
Хотя на этот вопрос уже был дан ответ, я хотел поделиться своим подходом к решению этой проблемы.У меня часто возникала такая же проблема с переименованием проекта в 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
Что сработало у меня в 2017 году:
- Закрыть решение ПРОТИВ
- Переименован каталог проектов в solution.
- (нажать на изменение в системе управления версиями - git в моем случае)
- отредактируйте файл sln в текстовом редакторе (за пределами VS2017), изменив имя каталога.
- Повторно откройте решение в VS
Там было написано что - то вроде "повторное добавление проекта"Я все перестроил, и все было хорошо.
ПРИМЕЧАНИЕ:Это исправление предназначено для Visual Studio 2008, но должно сработать и здесь.
- Используя проводник Windows, переименуйте обе папки решений (родительскую папку и дочернюю папку) на новое имя решения.
- Удалить
.sln
файл, расположенный в родительской папке. - В Visual Studio выберите Файл|Открыть проект.
- Перейдите в новую папку, которую вы только что переименовали, и откройте файл .csproj (расположен в дочерней папке).
- Щелкните правой кнопкой мыши название проекта и переименуйте его в то, что вы хотите.(Имя должно совпадать с именем папки на шаге 1.)
- Выберите Файл | Закрыть решение.Появится диалоговое окно с запросом, хотите ли вы сохранить изменения в
.sln
файл.Нажмите кнопку "Да". - В диалоговом окне Сохранить файл как укажите на только что переименованную РОДИТЕЛЬСКУЮ папку и нажмите Сохранить.(ПРИМЕЧАНИЕ:Убедитесь, что
.sln
файл имеет то же имя, что и папка.Не требуется, но сохраняет согласованность.)
Выполнено.
При использовании TFS шаг 2 фактически заключается в переименовании папки в системе управления версиями, а затем в получении последней версии перед повторным открытием решения.
Недавно мы загрузили бета-версию бесплатного расширения VS, которое делает это за вас.Взгляните на галерею VS:Загрузка галереи
Что ж, я сделал это по-своему
- Закройте Visual Studio 2012
- Переименуйте свой подкаталог на предпочтительное имя в .sln
- Удалить файл *.suo
- Снова откройте решение, исправьте все свойства загруженных проектов, чтобы они соответствовали новому имени подкаталога
Переименуйте проект в решении и папку проекта
Удалить проект из решения
Добавьте существующий проект в решение (ваш переименованный проект)
У меня это работает.TFS также будет отслеживать новый проект.
Откройте файл .sln в текстовом файле и в следующей строке измените имя папки на новое Проект("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Рикки", "\.csproj", "{021CC6B0-8CFB-4194-A103-C19AF869D965}"
Мне приходилось делать это много раз.Действительно полезно иметь возможность перепрофилировать существующий проект, но при этом иметь возможность переименовывать текст в пространствах имен, файлах и папках.Использование рекурсивного поиска и замены, начинающегося с корневой папки, означает, что переименование не приводит к разрыву ссылок на проекты в файлах решений и ссылках на проекты.
С этой целью я создал проект, чтобы сделать именно это.Приложение также пытается игнорировать папки контроля версий, такие как .git, .svn и файл настроек .vs.Более подробная информация в README.
https://github.com/garethrbrown/vs-project-rename
После изменения имени папки откройте файл .sln в блокноте и измените путь к нему на новый.
Аналогичные проблемы возникают, когда необходимо создать новый проект, и вы хотите, чтобы имя папки проекта отличалось от имени проекта.
Когда вы создаете новый проект, он сохраняется по адресу
./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
Недостатком этого подхода является то, что вам также необходимо настроить пространство имен по умолчанию и имя выходного двоичного файла, а также обновить пространства имен во всех файлах, которые включены в шаблон проекта.
Я использую VS 2013 и TFS 2013.
Я сделал это вот так:
- Откройте Visual Studio, не открывая само решение, и используйте проводник системы управления версиями для поиска и переименования папок для проектов
- Дважды щелкните файл решения в проводнике системы управления версиями, чтобы открыть решение.
- У вас есть вопрос:"Недавно в это решение были добавлены проекты.Вы хотите получить их из системы управления версиями?", и вы выбираете "Да"
- Теперь папка и структура проекта на месте, но теперь файлы, так что теперь вы получаете последнюю версию из системы управления версиями
- Попробуйте создать и зафиксировать изменения.
Существует более простой подход, который был протестирован в версии 2013 Update 1 и применим для проектов, подключенных к TFS:
- Откройте VS, но позвольте решению закрыться
- Откройте проводник с исходным кодом и переименуйте нужную папку (решение будет закрыто для вас, если вы еще не закрыли его первым).
- Щелкните правой кнопкой мыши на решении (также из обозревателя исходных текстов) и выберите пункт регистрация
- Откройте решение, вам скажут, что добавлены новые проекты, примите, чтобы получить изменения.
- Удалите проект из решения и добавьте его снова, затем верните
- Убедитесь, что внутренние ссылки в порядке
Самый простой способ - перейти к свойству окна изменить имя пространств имен по умолчанию, после чего переименование будет выполнено
1-Переименуйте проект вне VS.2-отредактируйте your_project_name.sln с помощью текстового редактора, переименуйте путь в новый path
Я сделал следующее:
Переименуйте проект из vs2013.(необязательно / не требуется)
Экспортируйте проект в виде шаблона.
Закройте решение.
Снова откройте решение
Создайте проект на основе сохраненного шаблона и используйте название, которое вам нравится.
Удалите из обозревателя решений предыдущий проект.
На этом этапе я попытался скомпилировать новое решение, и для этого мне пришлось вручную скопировать некоторые ресурсы и заголовки в новую папку проекта из старой папки проекта.Делайте это до тех пор, пока он не скомпилируется без ошибок.Теперь этот новый проект спас "файл ".exe" в предыдущую папку.*
Итак ...>
Перейдите в проводник Windows и вручную скопируйте файл решения из старой папки проекта в новую папку проекта.
Закройте решение и откройте его из нового проекта.
При необходимости изменил конфигурацию обратно на (x64).
Удалите папку проекта со старым именем из папки решения.