Вопрос

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

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

Есть ли какой-нибудь лучший способ?

Это было полезно?

Решение

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


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

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

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

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

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

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

  1. AssemblyProductAttribute
  2. AssemblyDescriptionAttribute
  3. AssemblyTitleAttribute

Другие советы

Есть другой способ сделать это, используя файлы *.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. конечно, не забудьте переместить весь проект в этот каталог

Получайте удовольствие.

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

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

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

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

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

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

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

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

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

Вуаля :)

Более простым решением является следующее:

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

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

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

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

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

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

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

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

Переименуйте свое корневое пространство имен (если у вас есть resharper, щелкните правой кнопкой мыши пространство имен и выберите Рефакторинг -> Переименовать).

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

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

Скачать

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

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

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

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

Смотрите пункт 3 в статье по ссылке.

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

У меня это сработало.

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

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

Протестирован на 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, но должно сработать и здесь.

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

Выполнено.

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

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

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

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

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

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

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

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

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

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

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

Example

После изменения имени папки откройте файл .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.

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

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

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

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

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

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

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

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

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

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

  4. Снова откройте решение

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

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

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

Итак ...>

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top