Visual Studio memindahkan proyek ke folder yang berbeda

182

Bagaimana cara memindahkan proyek ke folder lain di Visual Studio? Saya terbiasa dengan struktur ini dalam proyek saya.

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

Saya ingin mengubah nama seluruh namespace SomethingElse menjadi SomethingNew, apa cara terbaik untuk melakukan itu (tanpa secara manual masuk ke file .sln)?

Egor Pavlikhin
sumber
Apakah Anda menggunakan TFS sebagai penyedia kontrol sumber Anda?
Bermo
Apakah Anda ingin mengganti nama hanya folder atau keseluruhan proyek?
Charles Gargent
Proyek, folder, dan namespace.
Egor Pavlikhin

Jawaban:

175

Hapus proyek dari solusi Anda dengan mengklik kanan di jendela Solution Explorer dan memilih Hapus. Pindahkan seluruh folder proyek, termasuk subdirektori ke mana pun Anda ingin pergi. Tambahkan proyek kembali ke solusi Anda.

Nama Namespace adalah sesuatu yang sangat berbeda, cukup edit kode sumbernya.

Hans Passant
sumber
6
Itulah yang saya lakukan, tetapi saya pikir ada cara untuk melakukan semua itu tanpa menghapus seluruh proyek, yang membuat saya kemudian menambahkan kembali semua dependensi.
Egor Pavlikhin
31
Bongkar semua proyek bergantung dari solusi, sebelum menghapus proyek yang ingin Anda pindahkan. Dengan begitu, mereka tidak mendeteksi penghapusan dan referensi proyek tetap utuh. Setelah Anda memindahkan proyek dan menambahkannya kembali ke solusi, Anda dapat memuat proyek tergantung lagi.
base2
13
Jangan lupa bahwa menghapus file di TFS, dan kemudian mengimportnya kembali ke TFS di lokasi atau proyek direktori lain, menyebabkan riwayat perubahan file dihapus.
Paul
saya ingin melakukannya tanpa kehilangan riwayat perubahan sehingga saya masih bisa melakukan perbandingan ketika saya mau.
user734028
196

Saya mencoba saran untuk menghapus dan menambahkan kembali proyek, tetapi kemudian memperbaiki dependensi bisa menyebalkan.

Saya menggunakan pendekatan ini:

  1. Pindahkan folder proyek.
    • Jika proyek dalam kontrol sumber, lakukan gerakan menggunakan perintah kontrol sumber.
  2. Edit file solusi dalam editor teks. Seharusnya hanya ada satu jalur yang perlu Anda ubah.
Igor ostrovsky
sumber
Jelas lebih mudah! Tapi, setelah saya memindahkan dan mengedit solusi menggunakan edit teks, file solusi muncul di bawah seperti file teks biasa. Bagaimana saya menyingkirkan ini?
Abriel
2
"Jika proyek dalam kontrol sumber, lakukan gerakan menggunakan perintah kontrol sumber." .. Bisakah Anda menjelaskan bagaimana melakukan ini?
Anish V
3
@AnishV Sebagai contoh, jika Anda menggunakan Git, ketikkan git mv ...sebagai ganti mv .... Lihat git-mvdokumentasi untuk info lebih lanjut.
cubuspl42
3
Dalam file .csproj Anda perlu memperbarui properti SolutionDir, serta memperbaiki semua jalur untuk referensi proyek dan lokasi paket nuget. Dalam file .sln yang perlu Anda lakukan adalah memperbarui path ke proyek.
Pete
Ini berhasil bagi saya. Satu-satunya 'trik' adalah saya harus mengubah file .sln sehingga tidak hanya dibaca untuk mengeditnya dan kemudian menandainya sebagai hanya dibaca lagi untuk tujuan keamanan.
JustWannaFly
44
  1. Tutup solusi Anda di VS2012
  2. Pindahkan proyek Anda ke lokasi baru
  3. Buka solusi Anda
  4. Pilih proyek yang gagal dimuat
  5. Di jendela alat Properties, ada entri "File path" yang dapat diedit yang memungkinkan Anda untuk memilih lokasi proyek baru
  6. Tetapkan jalur baru
  7. Klik kanan pada proyek dan klik muat ulang
Emmanuel
sumber
4
Ini bekerja sangat baik dan tampaknya menjadi cara tercepat dan termudah, jawaban yang jauh lebih tinggi lainnya terlepas dari itu. Ada sebuah artikel di sini: msmvps.com/blogs/deborahk/archive/2010/06/30/…
Mike Rosenblum
@MikeRosenblum Tautan rusak, tautan baru adalah blogs.msmvps.com/deborahk/…
Roi Gavish
1
Tidak berfungsi di VS2012. Artikel yang ditautkan juga hanya menyebutkan VS2010.
bassim
Bekerja dengan baik untuk saya di VS2010 termasuk semua referensi saya kecuali 1 yang harus saya tambahkan kembali.
Kristian
@Vasanth Dalam Visual Studio 2019 Anda perlu mengedit file .sln secara manual untuk menemukan proyek; dan mungkin (mungkin) file .csproj juga untuk merujuk lokasi yang benar dari paket nuget.
Caltor
3

Yang berhasil bagi saya adalah:

  1. Hapus proyek dari solusi.
  2. Edit file proyek dengan editor teks.
  3. Perbarui semua jalur relatif ke "paket". Dalam kasus saya saya harus mengubah ..\packagesuntuk ..\..\..\packagessejak saya pindah proyek ke folder yang lebih dalam.
  4. Muat proyek kembali ke solusi.
Gonzalo Méndez
sumber
2

Saya memiliki masalah yang sama. Saya menyelesaikannya dengan memindahkan referensi dan dalam waktu kurang dari 15 menit, tanpa mengubah referensi.

Bagi saya solusinya sederhana:

  1. Pindahkan file Anda di tempat yang Anda butuhkan.
  2. Hapus folder dengan nama .vs. Harus folder tidak terlihat.
  3. Buka file solusi (.sln) menggunakan editor sederhana seperti note atau notepad ++.
  4. Ubah referensi di mana file Anda berada, menggunakan struktur berikut: jika Anda meletakkan proyek Anda di folder yang sama hapus folder sebelumnya atau referensi ".. \"; jika Anda memasukkan folder di atas, tambahkan referensi ".. \" atau nama folder tersebut.
  5. Simpan file dengan perubahan.
  6. Buka file proyek (.csproj) dan lakukan hal yang sama, hapus atau tambahkan referensi.
  7. Simpan perubahannya.
  8. Buka file solusi.

Contoh:

Dalam file solusi (.sln)

  • Asli: Proyek ("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PATH1.UI", " ScannerPDF \ PATH1.UI \ PATH1.UI.csproj", "{A26438AD-E428-4AE4-8AB8-A5D6933E2 } "Proyek (" {FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} ") =" PATH1.DataService "," ScannerPDF \ PATH1.DataService \ PATH1.DataService.csproj "," {ED5A561B-3674-4613E-B134E } "

    Baru: Proyek ("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PATH1.MX.UI", "PATH1.MX.UI \ PATH1.UI.csproj", "{A26438AD-E428-4AE4-8AB8 -A5D6933E2D7B} "Proyek (" {FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} ") =" PATH1.DataService "," PATH1.DataService \ PATH1.DataService.csproj "," {ED5A561-461-1361-4661-466-466-47-466-466-47-466-466-A-AgAEA4A-A5D6933E2D7B} "Proyek (" {FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} ") =" PATH1.DataService "," PATH1.DataService \ PATH1.DataService.csproj "," {ED5A561-461-6613-3661-466-47-466-47-466-47-466-A-61-466-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA } "

Dalam file proyek:

  • Asli:

    Baru:

    Referensi asli: .... \ lib \ RCWF \ 2018.1.220.40 \ TelerikCommon.dll

    Referensi baru: .. \ lib \ RCWF \ 2018.1.220.40 \ TelerikCommon.dll

Victor David Francisco Enrique
sumber
2

Rangkuman: ganti nama-dan-pindah di VS2019 dengan git, pertahankan riwayat git, tingkatkan R # sedikit, pembaruan referensi proyek tergantung otomatis (penting untuk sln's dengan banyak proyek, kami memiliki> 200)

Saya telah menggunakan langkah-langkah berikut untuk mengubah nama-dan-memindahkan proyek C # di Visual Studio 2019. Proses ini menggunakan R # untuk menyesuaikan ruang nama. Sejarah git dipertahankan dengan melakukan "git mv" (menghindari penambahan / penghapusan penurunan riwayat).

Dua fase: 1) mengganti nama proyek di tempat dan 2) memindahkan proyek.

(Menggunakan tip dari proyek bongkar muat base2 .)

Ganti nama

  1. VS | Penjelajah Solusi | proyek klik kanan | Ganti nama (misalnya, Utils.Foo ke Foo).
  2. VS | Penjelajah Solusi | proyek klik kanan | Properti | ubah nama majelis, namespace default, dan bidang Informasi Majelis
  3. Lakukan 1 dan 2 untuk proyek uji yang sesuai (mis. Utils.Foo.Tests)
  4. VS | Penjelajah Solusi | proyek klik kanan (produksi dan pengujian) | Refactor | Sesuaikan Namespaces
  5. File XAML yang menggunakan proyek mungkin perlu diperbarui (secara manual atau dengan pencarian global yang sesuai dan ganti)
  6. Bangun Kembali Semua
  7. Melakukan!! (untuk melakukan perubahan sebelum bergerak)

Catatan: Folder di Windows Explorer tetap menjadi nama lama hingga saat ini (misalnya, Utils.Foo). Ini diperbaiki pada langkah-langkah langkah.

Pindah

Metode ini: 1) mempertahankan sejarah git, 2) memanfaatkan R # untuk menyesuaikan ruang nama secara atom dan 3) memperbarui proyek-proyek yang bergantung secara massal (menghindari pengeditan manual yang membosankan dari file-file sln dan csproj yang tergantung).

  1. bongkar semua proyek dalam solusi (sehingga penghapusan proyek target tidak memicu perubahan dalam proyek dependen)

    VS | pilih semua folder solusi di bawah Solusi | klik kanan Bongkar Proyek

  2. pindahkan folder menggunakan git (jadi riwayat dipertahankan)

a) buka Command Command Prompt untuk 2019

b) status git (untuk mengilustrasikan "tidak ada komitmen, pohon bekerja bersih")

c) git mv proyek misalnya, git mv "C: \ Code \ foo \ foo \ Utils.Foo" "C: \ Code \ Foo"

d) status git untuk melihat / memverifikasi perubahan

  1. hapus proyek

VS | Penjelajah Solusi | pilih proyek | klik kanan | Hapus (karena semua proyek dibongkar, ini BUKAN dengan benar menghapus referensi untuk itu dalam proyek tergantung)

  1. tambahkan kembali proyek (ke lokasi baru di pohon di Solution Explorer)

a) VS | Penjelajah Solusi | pilih folder induk target | klik kanan | Tambah | Proyek yang Ada

  1. muat ulang semua proyek

PENTING: Konfirmasikan bahwa * .csproj file untuk proyek-proyek dependen telah diperbarui.

(VS | Team Explorer | Perubahan | klik dua kali setiap dependen csproj terdaftar | periksa-verifikasi perubahan jalur ProjectReference)

  1. Perbaiki jalur secara manual dalam satu file * .csproj yang dipindahkan

Gunakan Notepad ++ (atau editor teks lainnya) untuk memperbaiki jalur. Seringkali ini dapat dilakukan dengan pencarian-dan-ganti yang sederhana (misalnya, ../../../../ hingga ../../).

Ini akan memperbarui ...

a) referensi GlobalAssmeblyInfo.cs

b) jalur menuju paket

c) jalur ke file diagram Ketergantungan Validasi

d) lintasan ke lintasan aturan (misalnya, <CodeAnalysisRuleSet>..\..\..\..\SolutionDependencyValidation\IgnoreWarnings.ruleset</CodeAnalysisRuleSet>)

  1. Tutup dan buka kembali solusinya (untuk mendapatkan referensi proyek ke dalam kondisi yang baik)

Simpan Semua, Tutup Solusi, saya lebih suka menghapus folder bin dan obj agar bersih dari sejarah, Buka kembali Solusi

  1. Mengesahkan

a) VS | Penjelajah Tim | Perubahan

i) akan melihat Staged Changes yang mengungkapkan file-file yang dipindahkan ii) akan melihat proyek-proyek dependen (* .csproj) yang diperbarui dengan baik, tinjau ulang csproj diffs dan perhatikan bahwa jalur telah diperbarui dengan indah !! (Ini adalah keajaiban yang menghindari dengan susah payah memperbarui file csproj secara manual menggunakan editor teks)

b) di Windows Explorer, verifikasi lokasi lama kosong

c) Bersihkan Solusi, Rebuild Solution, Jalankan tes unit, Luncurkan aplikasi di SLN.

  1. Melakukan!!
dthal
sumber
1

Sangat mudah di VS2012; cukup gunakan fitur pemetaan perubahan:

  1. Buat folder tempat Anda ingin solusi dipindahkan.
  2. Check-in semua file proyek Anda (jika Anda ingin membuat Anda berubah), atau kembalikan file yang sudah diperiksa.
  3. Tutup solusinya.
  4. Buka Explorer Kontrol Sumber.
  5. Klik kanan solusinya, dan pilih "Advanced -> Remove Mapping ..."
  6. Ubah nilai "Folder Lokal" ke nilai yang Anda buat di langkah # 1.
  7. Pilih "Ubah".
  8. Buka solusinya dengan mengklik dua kali dalam explorer kontrol sumber.
Forch
sumber
2
Yaitu, jika Anda menggunakan TFS?
Martin Ba
1

di komunitas visual studio 2019, saya melakukan apa yang dikatakan Victor David Francisco Enrique, tetapi hanya perlu menghapus folder .vs invisbile

BWS1986
sumber
0

Di VS 2015

  1. Bongkar proyek Anda di penjelajah solusi
  2. Buat solusi baru
  3. Salin proyek ke folder solusi baru
  4. Klik kanan solusinya, tambahkan proyek yang ada.
  5. Jika Anda menggunakan beberapa kerangka kerja seperti MVC, Anda mungkin perlu menambahkan referensi di manajer referensi.
code4j
sumber
0

Saya tahu ini mencoba ini berhasil untuk saya.

Dalam visual studio 2017 edisi komunitas itu membuat proyek di jalur ini "C: \ Users \ mark \ source \ repos \ mipmaps \ mipmaps" Ini akan membuat akses ke file ditolak masalah

Sekarang, Anda bisa memperbaikinya dengan cara ini.

tutup proses studio visual Anda. Kemudian, cari proyek Anda dan salin folder proyek Tapi, pertama-tama buatlah Sub-folder Named Projects di dalam folder visual studio 2017 Anda dalam dokumen. Selanjutnya, tempel folder proyek di dalam visual studio 2017 folder Proyek Anda bukan folder visual studio utama 2017 itu harus masuk ke Sub-folder yang disebut Proyek. Selanjutnya, restart Visual studio 2017 Lalu, pilih Open project Solution Kemudian, cari proyek Anda yang Anda tempelkan di visual studio 2017 folder Projects Kemudian bersihkan Project dan bangun kembali, Ini, harus membangun dan mengkompilasi dengan baik. Semoga ini bisa membantu orang lain. Tidak yakin mengapa Microsoft berpikir untuk membangun proyek Anda di jalur yang memerlukan izin menulis ada di luar jangkauan saya.

markk
sumber
0

Saya ingin perubahan di Git ditampilkan sebagai gerakan / ganti nama daripada menghapus & menambah. Jadi saya melakukan kombo di atas dan posting ini .

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

Dan sesuaikan jalur proyek dan majelis dari nuget Pkg di file sln melalui editor teks.

Bob Lokerse
sumber
0
  1. Salin folder proyek ke tujuan baru
  2. Hapus proyek Anda dari solusi (Klik kanan proyek di "Solution Explorer" dan pilih "Hapus")
  3. Kemudian tambahkan proyek yang ada ke solusi (Klik kanan proyek di "Solution Explorer" dan pilih "Tambah" lalu "Proyek yang ada")
  4. Ubah jalur ke folder "paket" di file "YourProjectName.csproj" (Buka di notepad dan ubah jalur untuk paket yang ditautkan)
Mi lainnya
sumber
0

Ini bekerja untuk saya vb2019. Saya menyalin folder proyek sumber saya. Saya kemudian menempelkan proyek, dan mengganti nama folder menjadi apa pun. Untuk memutuskan ikatan kembali ke folder proyek sumber, saya sementara mengganti nama folder sumber. Saya membuka proyek tujuan saya. Jalur ke formulir dan modul ditemukan kembali di folder lokal. Saya membaca semua formulir dan modul untuk memastikan semuanya berfungsi. Saya menjalankan proyek. Saya menutup proyek. Saya mengganti nama folder proyek sumber kembali ke bukan nama asli. Saya dapat membuka kedua proyek sekaligus tanpa kesalahan.

Sandy
sumber