Проект Visual Studio перемістить проект в іншу папку


182

Як перенести проект у іншу папку в Visual Studio? Я звик до цієї структури в своїх проектах.

-- app
---- Project.Something
---- Project.SomethingElse

Я хочу перейменувати весь простір імен SomethingElse на SomethingNew, який найкращий спосіб зробити це (без вручну вникати у файл .sln)?


Ви використовуєте TFS в якості постачальника управління джерелом?
Бермо

Ви хочете перейменувати лише папку або весь проект?
Чарльз Гаргент

Проект, папка та простір імен.
Єгор Павлихін

Відповіді:


175

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

Імена простору імен - це щось зовсім інше, просто відредагуйте вихідний код.


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

31
Перед видаленням проекту, який потрібно перемістити, вивантажте всі залежні проекти. Таким чином, вони не виявляють видалення, і посилання на проекти залишаються недоторканими. Після переміщення проекту та повторного додавання його до рішення ви можете знову завантажити залежні проекти.
база2

13
Не забувайте, що якщо видалити файл у TFS, а потім повторно імпортувати його назад у TFS в інше місце розташування або проект, приводить до видалення історії змін файлу.
Павло

я хочу це зробити, не втрачаючи історію змін, тому я все ще можу робити порівняння, коли мені хочеться.
користувач734028

196

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

Я використовую такий підхід:

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

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

2
"Якщо проект знаходиться у контролі джерела, виконайте переміщення, використовуючи команди управління джерелом." .. Чи можете ви пояснити, як це зробити?
Аніш V

3
@AnishV Для прикладу, якщо ви використовуєте Git, введіть git mv ...замість mv .... Докладнішу git-mvінформацію див. У документації.
cubuspl42

3
У файлі .csproj потрібно оновити властивість SolutionDir, а також виправити всі шляхи для посилань на проекти та локальних пакетів пакунків. У файлі .sln все, що вам потрібно зробити, - оновити шлях до проекту.
Піт

Це спрацювало на мене. Єдиним "трюком" було те, що я повинен був змінити файл .sln, щоб його не було лише редагувати, а потім позначити його як повторне лише з метою безпеки.
JustWannaFly

44
  1. Закрийте своє рішення у VS2012
  2. Перемістіть проект на нове місце
  3. Відкрийте своє рішення
  4. Виберіть проект, який не вдалося завантажити
  5. У вікні інструмента "Властивості" є редагована запис "Шлях до файлу", яка дозволяє вибрати нове місце проекту
  6. Встановіть новий шлях
  7. Клацніть правою кнопкою миші на проект і натисніть кнопку "Перезавантажити"

4
Це працює надзвичайно добре, і, здавалося б, це найшвидший і найпростіший спосіб, інші відповіді, набагато вищі, проголосували незважаючи на це. Тут є стаття: msmvps.com/blogs/deborahk/archive/2010/06/30/…
Майк Розенблум,

@MikeRosenblum Посилання розірвано, нове посилання - blogs.msmvps.com/deborahk/…
Roi Gavish

1
Не працює у VS2012. Пов'язана стаття також згадує лише VS2010.
басим

Для мене добре працював у VS2010, включаючи всі мої посилання, крім 1, які мені довелося додати.
Крістіан

@Vasanth У Visual Studio 2019 вам потрібно вручну відредагувати файл .sln, щоб знайти проект; і можливо (можливо) .csproj файл теж, щоб відповідати правильному розташуванню будь-яких нукетних пакетів.
Caltor

3

Що для мене працювало:

  1. Видаліть проект із рішення.
  2. Відредагуйте файл проекту за допомогою текстового редактора.
  3. Оновіть всі відносні шляхи до "пакунків". У моєму випадку мені довелося змінити , ..\packagesщоб , ..\..\..\packagesтак як я переїхав проект до глибшої папці.
  4. Завантажте проект назад у рішення.

2

У мене була така ж проблема. Я вирішив перемістити посилання і менше ніж за 15 хвилин, не змінюючи посилань.

Для мене рішення було простим:

  1. Перемістіть свої файли там, де вам потрібно.
  2. Видаліть папку з назвою .vs. Має бути як невидима папка.
  3. Відкрийте файл рішення (.sln) за допомогою такого простого редактора, як примітка або блокнот ++.
  4. Змініть посилання, де знаходиться ваш файл, використовуючи таку структуру: якщо ви помістили проект у ту саму папку, видаліть попередню папку або посилання ".. \"; якщо ви помістите вищевказану папку, додайте посилання ".. \" або ім'я папки.
  5. Збережіть файл із змінами.
  6. Відкрийте файл проекту (.csproj) і зробіть те саме, видаліть або додайте посилання.
  7. Збережіть зміни.
  8. Відкрийте файл рішення.

Приклади:

У файлі рішення (.sln)

  • Оригінал: Project ("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PATH1.UI", " ScannerPDF \ PATH1.UI \ PATH1.UI.csproj", "{A26438AD-E428-4AE4-8AB8-A5D6933 } "Project (" {FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} ") =" PATH1.DataService "," ScannerPDF \ PATH1.DataService \ PATH1.DataService.csproj "," {ED5A561B-3674-4611EE1174E-4674-4674EEE1174E-4674-4674EEEEEEEE " } "

    Нове: Project ("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PATH1.MX.UI", "PATH1.MX.UI \ PATH1.UI.csproj", "{A26438AD-E428-4AE4-8AB8 -A5D6933E2D7B} "Проект (" {FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} ") =" PATH1.DataService "," PATH1.DataService \ PATH1.DataService.csproj "," {ED5A54613-AD5E546B-AD5E546B-AD5E546B-AD5E546B-AD5E546B-AD5E546B-AD5E546B-AD5E546B-AD5E546B-AD5E546B-AD5E546B-AD5E546B-AD5E546-Q5E546-A5D6933E2D7B} "project (" {FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} ") } "

У файлі проекту:

  • Оригінал:

    Нове:

    Оригінальна посилання: .... \ lib \ RCWF \ 2018.1.220.40 \ TelerikCommon.dll

    Нова посилання: .. \ lib \ RCWF \ 2018.1.220.40 \ TelerikCommon.dll


2

Короткий зміст: перейменування та переміщення у VS2019 з git, зберігання історії git, використання R # трохи, автоматичне оновлення залежної від проекту (важливо для sln з багатьма проектами, у нас> 200)

Я використовую наступні кроки для перейменування та переміщення проектів C # у Visual Studio 2019. Цей процес використовує R # для налаштування просторів імен. Історія git зберігається, виконуючи "git mv" (уникаючи краплі додавання / видалення історії).

Дві фази: 1) перейменування проекту на місце та 2) переміщення проекту.

(Використовується підказка з проектів для вивантаження base2 .)

Перейменуйте

  1. VS | Провідник рішень | клацніть правою кнопкою миші проект | Перейменуйте (наприклад, Utils.Foo в Foo).
  2. VS | Провідник рішень | клацніть правою кнопкою миші проект | Властивості | змінити ім'я збірки, поле імен за замовчуванням та поля Інформація про збірку
  3. Зробіть 1 і 2 для відповідного тестового проекту (наприклад, Utils.Foo.Tests)
  4. VS | Провідник рішень | правою кнопкою миші проекти (виробництво та випробування) | Рефактор | Налаштування просторів імен
  5. Файли XAML, які використовують проект, можливо, потрібно буде оновити (вручну або за допомогою відповідного глобального пошуку та заміни)
  6. Відновіть усі
  7. Здійснити !! (здійснити зміни перед рухами)

Примітка. Папка в Провіднику Windows до цього часу залишається старою назвою (наприклад, Utils.Foo). Це фіксується в кроках переміщення.

Рухатися

Цей метод: 1) зберігає історію git, 2) використовує R # для атомного налаштування просторів імен та 3) масове оновлення залежних проектів (уникає стомлюючого ручного редагування залежних файлів sln та csproj).

  1. вивантажте всі проекти в рішенні (щоб видалення цільового проекту не викликало змін у залежних проектах)

    VS | виберіть усі папки рішення під рішенням | клацніть правою кнопкою миші Вивантажити проекти

  2. переміщення папок за допомогою git (так зберігається історія)

а) відкрити командний рядок розробника на 2019 рік

b) статус git (для ілюстрації "нічого робити, не працює чисте дерево")

в) git mv проект, наприклад, git mv "C: \ Code \ foo \ foo \ Utils.Foo" "C: \ Code \ Foo"

г) статус git для перегляду / підтвердження змін

  1. видалити проект

VS | Провідник рішень | виберіть проект | клацніть правою кнопкою миші | Видалити (оскільки всі проекти завантажені, це правильно НЕ видалить посилання на нього у залежних проектах)

  1. повторно додати проект (до нового місця розташування у дереві в Провіднику рішень)

а) VS | Провідник рішень | виберіть цільову батьківську папку | клацніть правою кнопкою миші | Додати | Існуючий проект

  1. перезавантажте всі проекти

ВАЖЛИВО: Переконайтесь, що * .csproj файли для залежних проектів були оновлені.

(VS | Team Explorer | Зміни | двічі клацніть будь-який залежний csproj, перелічений | перевірити-перевірити зміну шляху шляху ProjectReference)

  1. Вручну виправити контури в одному переміщеному файлі * .csproj

Використовуйте Notepad ++ (або інший текстовий редактор), щоб виправити шляхи. Часто це можна зробити за допомогою простого пошуку та заміни (наприклад, ../../../../ до ../../).

Це оновить ...

a) Посилання на GlobalAssmeblyInfo.cs

б) шляхи до пакетів

в) шляхи до файлів діаграми перевірки залежності

d) шляхи до набору правил (наприклад, <CodeAnalysisRuleSet>..\..\..\..\SolutionDependencyValidation\IgnoreWarnings.ruleset</CodeAnalysisRuleSet>)

  1. Закрийте та повторно відкрийте рішення (щоб привести посилання на проект у гарну форму)

Зберегти все, закрити рішення, я віддаю перевагу видалити папки бін та obj, щоб очистити історію, повторно відкрити рішення

  1. Підтвердити

а) VS | Провідник команди | Зміни

i) повинен бачити поетапні зміни, які розкривають переміщені файли ii) повинні бачити залежні проекти (* .csproj), які були добре оновлені, перегляньте csproj різниться і помічайте, що шляхи прекрасно оновлені !! (це магія, що дозволяє уникнути копіткого оновлення файлів csproj вручну за допомогою текстового редактора)

б) у Провіднику Windows перевірте, чи старе місце розташування порожнє

c) Очищення рішення, відновлення рішення, запуск тестів на одиницях, запуск програм у sln.

  1. Здійснити !!

1

У VS2012 це легко; просто скористайтеся функцією відображення змін:

  1. Створіть папку, куди потрібно перемістити рішення.
  2. Зареєструйте всі файли проекту (якщо ви хочете, щоб ви змінили) або відкатуйте всі перевірені файли.
  3. Закрийте рішення.
  4. Відкрийте Провідник управління джерелами.
  5. Клацніть на рішенні правою кнопкою миші та виберіть "Додатково -> Видалити картографування ..."
  6. Змініть значення "Місцева папка" на те, яке ви створили на кроці №1.
  7. Виберіть "Змінити".
  8. Відкрийте рішення, двічі клацнувши його в провіднику управління джерелами.

2
Тобто, якщо ви використовуєте TFS?
Мартін Ба

1

в зоні візуальної студії 2019 року, я зробив те, що говорить Віктор Девід Франсіско Енріке, але потрібно було лише видалити папку .vs invisbile


0

У VS 2015

  1. Вивантажте проект у провіднику рішень
  2. Створіть нове рішення
  3. Скопіюйте проекти в папку нового рішення
  4. Клацніть правою кнопкою миші рішення, додайте існуючий проект.
  5. Якщо ви використовуєте якусь рамку, наприклад MVC, вам може знадобитися додати посилання в диспетчер посилань.

0

Я зрозумів, що спробуйте це спрацювало на мене.

У візуальному виданні спільноти Studio 2017 він створює проект на цьому шляху "C: \ Users \ mark \ source \ repos \ mipmaps \ mipmaps" Це створить доступ до файлу, яким заборонено видавати

Тепер ви можете це виправити.

закрийте процес візуальної студії. Потім знайдіть свій проект та скопіюйте папку проекту. Але спочатку зробіть підпапку «Іменовані проекти» всередині папки «Візуальна студія 2017» у документах. Далі вставте папку проекту у папку Visual Studio 2017 Project, а не в основну папку візуальної студії 2017, вона повинна перейти в підпапку під назвою Projects. Далі перезапустіть Visual studio 2017 Потім виберіть Відкрити проект рішення. Потім знайдіть проект, який ви вставили, у папку «Проекти візуальної студії 2017». Потім очистіть проект і відновіть його, він повинен добре скласти і скласти. Сподіваюсь, це допомогло ще комусь. Не впевнений, чому Microsoft думає будувати ваші проекти таким чином, коли йому потрібні дозволи на запис, - це не за мене.


0

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

mkdir subdirectory
git mv -k ./* ./subdirectory
# check to make sure everything moved (see below)
git commit

І відрегулюйте шляхи проектів та збірок з нульового Pkg у файлі sln через текстовий редактор.


0
  1. Скопіюйте папку проекту на нове місце призначення
  2. Видаліть проект із рішення (Клацніть правою кнопкою миші проект у "Провідник рішень" та виберіть "Видалити")
  3. Потім додайте існуючий проект до рішення (Клацніть правою кнопкою миші проект у "Провідник рішень" та виберіть "Додати", а потім "Існуючий проект")
  4. Змінення шляху до папки "пакети" у файлі "YourProjectName.csproj" (Відкрити в блокноті та змінити шляхи для пов'язаних пакетів)

0

Це працювало для мене vb2019. Я скопіював папку вихідного проекту. Потім я вставив проект і перейменував папку в будь-яку. Щоб перервати зв'язки назад у папці вихідного проекту, я тимчасово перейменував папку джерела. Я відкрив проект призначення. Шляхи до форм та модулів були знову відкриті у локальній папці. Я переглянув усі свої форми та модулі, щоб переконатися, що вони працюють. Я керував проектом. Я закрив проект. Я перейменував папку вихідного проекту назад у не оригінальну назву. Я можу відкривати обидва проекти одночасно без помилок.


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