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