Visual Studio ย้ายโครงการไปยังโฟลเดอร์อื่น


182

ฉันจะย้ายโครงการไปยังโฟลเดอร์อื่นใน Visual Studio ได้อย่างไร ฉันคุ้นเคยกับโครงสร้างนี้ในโครงการของฉัน

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

ฉันต้องการเปลี่ยนชื่อเนมสเปซทั้งหมด SomethingElse to SomethingNew เป็นวิธีที่ดีที่สุดในการทำสิ่งนั้น (โดยไม่ต้องไปที่ไฟล์. sln ด้วยตนเอง)


คุณใช้ TFS เป็นผู้ให้บริการการควบคุมแหล่งที่มาของคุณหรือไม่?
Bermo

คุณต้องการเปลี่ยนชื่อเฉพาะโฟลเดอร์หรือโครงการทั้งหมดหรือไม่
Charles Gargent

โครงการโฟลเดอร์และเนมสเปซ
Egor Pavlikhin

คำตอบ:


175

ลบโปรเจ็กต์จากโซลูชันของคุณโดยคลิกขวาในหน้าต่างโซลูชัน Explorer และเลือกลบ ย้ายโฟลเดอร์โครงการทั้งหมดรวมถึงไดเรกทอรีย่อยทุกที่ที่คุณต้องการ เพิ่มโครงการกลับไปยังโซลูชันของคุณ

ชื่อเนมสเปซเป็นสิ่งที่แตกต่างอย่างสิ้นเชิงเพียงแค่แก้ไขซอร์สโค้ด


6
นั่นคือสิ่งที่ฉันทำ แต่ฉันคิดว่ามีวิธีที่จะทำสิ่งนั้นโดยไม่ต้องลบโครงการทั้งหมดซึ่งทำให้ฉันเพิ่มการอ้างอิงทั้งหมดอีกครั้ง
Egor Pavlikhin

31
ยกเลิกการโหลดโครงการที่ต้องพึ่งพาทั้งหมดออกจากโซลูชันก่อนที่จะลบโครงการที่คุณต้องการย้าย ด้วยวิธีนี้พวกเขาไม่ตรวจจับการลบและการอ้างอิงโครงการยังคงเหมือนเดิม หลังจากคุณย้ายโปรเจ็กต์และเพิ่มเข้ากับโซลูชันอีกครั้งคุณสามารถโหลดโปรเจ็กต์ที่ต้องพึ่งพาอีกครั้ง
base2

13
อย่าลืมว่าการลบไฟล์ใน TFS จากนั้นนำเข้าสู่ TFS อีกครั้งในตำแหน่งไดเรกทอรีหรือโครงการอื่นทำให้ประวัติการเปลี่ยนแปลงไฟล์ถูกลบ
Paul

ฉันต้องการที่จะทำโดยไม่สูญเสียประวัติศาสตร์ของการเปลี่ยนแปลงดังนั้นฉันยังสามารถทำการเปรียบเทียบเมื่อฉันต้องการ
user734028

196

ฉันลองข้อเสนอแนะเพื่อลบและเพิ่มโครงการอีกครั้ง แต่การแก้ไขการพึ่งพาอาจเป็นความเจ็บปวดได้

ฉันใช้วิธีนี้:

  1. ย้ายโฟลเดอร์โครงการ
    • หากโครงการอยู่ในการควบคุมแหล่งข้อมูลให้ทำการย้ายโดยใช้คำสั่งการควบคุมแหล่งที่มา
  2. แก้ไขไฟล์โซลูชันในเท็กซ์เอดิเตอร์ ควรมีเส้นทางเดียวเท่านั้นที่คุณต้องการเปลี่ยน

ง่ายกว่าแน่นอน! แต่หลังจากฉันย้ายและแก้ไขโซลูชันโดยใช้การแก้ไขข้อความไฟล์โซลูชันจะแสดงด้านล่างเหมือนกับไฟล์ข้อความทั่วไป ฉันจะกำจัดสิ่งนี้ได้อย่างไร
Abriel

2
"ถ้าโครงการอยู่ในการควบคุมซอร์สให้ย้ายโดยใช้คำสั่งควบคุมแหล่งที่มา" .. คุณช่วยอธิบายวิธีการนี้ได้อย่างไร
Anish V

3
@AnishV สำหรับ examaple ถ้าคุณใช้ Git พิมพ์แทนgit mv ... mv ...ดูgit-mvเอกสารประกอบสำหรับข้อมูลเพิ่มเติม
cubuspl42

3
ในไฟล์. csproj คุณต้องอัปเดตคุณสมบัติ SolutionDir รวมถึงแก้ไขพา ธ ทั้งหมดสำหรับการอ้างอิงโครงการและตำแหน่งแพ็กเกจ nuget ในไฟล์. sln สิ่งที่คุณต้องทำคืออัพเดตพา ธ ไปยังโปรเจ็กต์
Pete

สิ่งนี้ได้ผลสำหรับฉัน 'เคล็ดลับ' เพียงอย่างเดียวคือฉันต้องเปลี่ยนไฟล์. sln ดังนั้นจึงไม่สามารถแก้ไขได้แบบอ่านอย่างเดียวจากนั้นทำเครื่องหมายว่าเป็นแบบอ่านอย่างเดียวอีกครั้งเพื่อความปลอดภัย
JustWannaFly

44
  1. ปิดโซลูชันของคุณใน VS2012
  2. ย้ายโครงการของคุณไปยังตำแหน่งใหม่
  3. เปิดโซลูชันของคุณ
  4. เลือกโครงการที่ล้มเหลวในการโหลด
  5. ในหน้าต่างเครื่องมือคุณสมบัติมีรายการ“ เส้นทางไฟล์” ที่แก้ไขได้ซึ่งช่วยให้คุณเลือกตำแหน่งโครงการใหม่
  6. กำหนดเส้นทางใหม่
  7. คลิกขวาที่โครงการแล้วคลิกโหลดซ้ำ

4
วิธีนี้ใช้งานได้ดีมากและดูเหมือนจะเป็นวิธีที่เร็วที่สุดและง่ายที่สุดคำตอบอื่น ๆ มีบทความอยู่ที่นี่: msmvps.com/blogs/deborahk/archive/2010/06/30/…
Mike Rosenblum

@MikeRosenblum ลิงก์เสียลิงก์ใหม่คือblogs.msmvps.com/deborahk/ …
Roi Gavish

1
ไม่ทำงานใน VS2012 บทความที่เชื่อมโยงยังกล่าวถึง VS2010 เท่านั้น
bassim

ทำงานได้ดีสำหรับฉันใน VS2010 รวมถึงการอ้างอิงทั้งหมดของฉันยกเว้น 1 ซึ่งฉันต้องเพิ่มอีกครั้ง
Kristian

@Vasanth ใน Visual Studio 2019 คุณต้องแก้ไขไฟล์. sln ด้วยตนเองเพื่อค้นหาโครงการ และอาจเป็น (อาจ) ไฟล์. csproj ด้วยเพื่ออ้างอิงตำแหน่งที่ถูกต้องของแพ็คเกจ nuget ใด ๆ
Caltor

3

สิ่งที่ใช้ได้ผลสำหรับฉันคือ:

  1. ลบโปรเจ็กต์ออกจากโซลูชัน
  2. แก้ไขไฟล์โครงการด้วยโปรแกรมแก้ไขข้อความ
  3. อัปเดตพา ธ ที่เกี่ยวข้องทั้งหมดเป็น "แพ็คเกจ" ในกรณีของฉันฉันต้องเปลี่ยน..\packagesไป..\..\..\packagesตั้งแต่ฉันย้ายโครงการไปยังโฟลเดอร์ที่ลึกกว่า
  4. โหลดโครงการกลับเข้าสู่โซลูชัน

2

ผมมีปัญหาเหมือนกัน. ฉันแก้ไขด้วยการย้ายการอ้างอิงและในเวลาน้อยกว่า 15 นาทีโดยไม่เปลี่ยนแปลงการอ้างอิง

สำหรับฉันการแก้ปัญหานั้นง่ายมาก:

  1. ย้ายไฟล์ของคุณในตำแหน่งที่คุณต้องการ
  2. ลบโฟลเดอร์ที่มีชื่อ. vs ต้องเป็นโฟลเดอร์ที่มองไม่เห็น
  3. เปิดไฟล์โซลูชัน (.sln) โดยใช้เครื่องมือแก้ไขง่ายๆเช่น note หรือ notepad ++
  4. เปลี่ยนการอ้างอิงที่ไฟล์ของคุณใช้โครงสร้างต่อไปนี้: หากคุณใส่โครงการของคุณในโฟลเดอร์เดียวกันลบโฟลเดอร์ก่อนหน้าหรือการอ้างอิง ".. \"; หากคุณใส่ในโฟลเดอร์ด้านบนเพิ่มการอ้างอิง ".. \" หรือชื่อของโฟลเดอร์
  5. บันทึกไฟล์พร้อมการเปลี่ยนแปลง
  6. เปิดไฟล์โครงการ (.csproj) และทำเช่นเดียวกันลบหรือเพิ่มการอ้างอิง
  7. บันทึกการเปลี่ยนแปลง
  8. เปิดไฟล์โซลูชัน

ตัวอย่าง:

ในไฟล์โซลูชัน (.sln)

  • ต้นฉบับ: โครงการ ("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PATH1.UI", " ScannerPDF \ PATH1.UI \ PATH1.UI.csproj", "{A26438AD-E428-4AE4-8AB8-A5D69 } "โครงการ (" {FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} ") =" PATH1.DataService "," สแกนเนอร์ PDD \ PATH1.DataService \ PATH1.DataService.csproj "," {ED5A561B-3674-4613-ADE546 " }"

    ใหม่: โครงการ ("{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.csproj "," {ED5A561B-36C-4613-EE2B-364E-464E-464E-464E-464E-464E46B " }"

ในไฟล์โครงการ:

  • เดิม:

    ใหม่:

    ข้อมูลอ้างอิงต้นฉบับ: .... \ lib \ RCWF \ 2018.1.220.40 \ TelerikCommon.dll

    ข้อมูลอ้างอิงใหม่: .. \ lib \ RCWF \ 2018.1.220.40 \ TelerikCommon.dll


2

สรุป: เปลี่ยนชื่อและย้ายใน VS2019 ด้วย git รักษาประวัติ git ใช้ประโยชน์จาก R # a บิตการอ้างอิงโครงการขึ้นอยู่กับการอัปเดตอัตโนมัติ (สำคัญสำหรับ sln กับหลายโครงการเรามี> 200)

ฉันใช้ขั้นตอนต่อไปนี้เพื่อเปลี่ยนชื่อโครงการ C # ใน Visual Studio 2019 กระบวนการนี้ใช้ R # เพื่อปรับเนมสเปซ ประวัติ git ถูกรักษาไว้โดยการทำ "git mv" (หลีกเลี่ยงการเพิ่ม / ลบประวัติหล่น)

สองขั้นตอน: 1) เปลี่ยนชื่อโครงการในสถานที่และ 2) ย้ายโครงการ

(ใช้เคล็ดลับจากการยกเลิกการโหลด base2โครงการ)

เปลี่ยนชื่อ

  1. VS | โซลูชัน Explorer | คลิกขวาที่โครงการ เปลี่ยนชื่อ (เช่น Utils.Foo เป็น Foo)
  2. VS | โซลูชัน Explorer | คลิกขวาที่โครงการ คุณสมบัติ | เปลี่ยนชื่อชุดประกอบชื่อเริ่มต้นและฟิลด์ข้อมูลประกอบ
  3. ทำ 1 และ 2 สำหรับโครงการทดสอบที่สอดคล้องกัน (เช่น Utils.Foo.Tests)
  4. VS | โซลูชัน Explorer | คลิกขวาโครงการ (การผลิตและทดสอบ) | Refactor | ปรับ Namespaces
  5. ไฟล์ XAML ที่ใช้โครงการอาจจำเป็นต้องได้รับการอัปเดต (ด้วยตนเองหรือด้วยการค้นหาทั่วโลกที่เหมาะสมและแทนที่)
  6. สร้างใหม่ทั้งหมด
  7. Commit !! (เพื่อกระทำการเปลี่ยนแปลงก่อนการเคลื่อนไหว)

หมายเหตุ: โฟลเดอร์ใน Windows Explorer ยังคงเป็นชื่อเดิมจนถึงจุดนี้ (เช่น Utils.Foo) นี่คือการแก้ไขในขั้นตอนการย้าย

ย้าย

วิธีนี้: 1) เก็บประวัติ git, 2) ใช้ประโยชน์ R # เพื่อปรับเนมสเปซแบบอะตอมมิกและ 3) อัปเดตโครงการที่ต้องพึ่งพา en masse (หลีกเลี่ยงการแก้ไขด้วยตนเองที่น่าเบื่อของไฟล์ sln และ csproj)

  1. ยกเลิกการโหลดโครงการทั้งหมดในโซลูชัน (เพื่อให้การลบโครงการเป้าหมายไม่ทำให้เกิดการเปลี่ยนแปลงในโครงการที่ขึ้นต่อกัน)

    VS | เลือกโฟลเดอร์โซลูชันทั้งหมดภายใต้โซลูชัน | คลิกขวายกเลิกการโหลดโครงการ

  2. ย้ายโฟลเดอร์โดยใช้ git (เพื่อรักษาประวัติ)

ก) เปิดพร้อมรับคำสั่งของนักพัฒนาซอฟต์แวร์สำหรับ 2019

b) สถานะ git (เพื่อแสดงให้เห็นว่า“ ไม่มีอะไรจะต้องกระทำทำความสะอาดต้นไม้ทำงาน”)

c) git mv โครงการเช่น git mv "C: \ Code \ foo \ foo \ Utils.Foo" "C: \ Code \ Foo"

d) สถานะ git เพื่อดู / ตรวจสอบการเปลี่ยนแปลง

  1. ลบโครงการ

VS | โซลูชัน Explorer | เลือกโครงการ | คลิกขวา | ลบออก (เนื่องจากโครงการทั้งหมดถูกยกเลิกการโหลดสิ่งนี้จะไม่ถูกลบการอ้างอิงถึงมันในโครงการที่ขึ้นต่อกัน)

  1. เพิ่มโครงการอีกครั้ง (ไปยังตำแหน่งใหม่ในแผนผังในโซลูชัน Explorer)

a) VS | โซลูชัน Explorer | เลือกโฟลเดอร์พาเรนต์เป้าหมาย | คลิกขวา | เพิ่ม | โครงการที่มีอยู่

  1. โหลดซ้ำทุกโครงการ

สิ่งสำคัญ: ยืนยันว่าไฟล์ * .csproj สำหรับโครงการที่อ้างถึงได้รับการอัปเดตแล้ว

(VS | Team Explorer | การเปลี่ยนแปลง | ดับเบิลคลิก csproj ใด ๆ ที่ขึ้นอยู่กับรายการ | ตรวจสอบ - ตรวจสอบการเปลี่ยนเส้นทาง ProjectReference)

  1. แก้ไขเส้นทางด้วยตนเองในไฟล์ * .csproj ที่ย้ายเดียว

ใช้ Notepad ++ (หรือตัวแก้ไขข้อความอื่น ๆ ) เพื่อแก้ไขเส้นทาง บ่อยครั้งที่สิ่งนี้สามารถทำได้ด้วยการค้นหาและแทนที่ง่าย ๆ (เช่น ../../../../ ถึง ../../)

สิ่งนี้จะอัปเดต ...

a) การอ้างอิง GlobalAssmeblyInfo.cs

b) เส้นทางไปยังแพ็คเกจ

c) พา ธ ไปยังไฟล์ไดอะแกรมการตรวจสอบความน่าเชื่อถือ

d) เส้นทางไปยังเส้นทาง ruleset (เช่น, <CodeAnalysisRuleSet>..\..\..\..\SolutionDependencyValidation\IgnoreWarnings.ruleset</CodeAnalysisRuleSet>)

  1. ปิดและเปิดโซลูชันอีกครั้ง (เพื่อให้การอ้างอิงโครงการมีรูปร่างดี)

บันทึกทั้งหมด, ปิดโซลูชัน, ฉันต้องการลบโฟลเดอร์ bin และ obj เพื่อล้างประวัติ, เปิดโซลูชันใหม่

  1. ตรวจสอบ

a) VS | Team Explorer | การเปลี่ยนแปลง

i) ควรเห็น Staged Changes ที่เปิดเผยไฟล์ที่ถูกย้าย ii) ควรเห็นโปรเจคที่ต้องพึ่งพา (* .csproj) ที่ได้รับการอัพเดตอย่างดีตรวจสอบ csproj ที่ต่างกันและสังเกตว่าเส้นทางได้รับการปรับปรุงอย่างสวยงาม !! (นี่คือเวทย์มนตร์ที่หลีกเลี่ยงการอัพเดตไฟล์ csproj ด้วยตนเองอย่างลำบากโดยใช้โปรแกรมแก้ไขข้อความ)

b) ใน Windows Explorer ตรวจสอบตำแหน่งเก่าว่าว่างเปล่า

c) ทำความสะอาดโซลูชันสร้างโซลูชันใหม่เรียกใช้การทดสอบหน่วยเปิดแอปใน sln

  1. Commit !!

1

มันง่ายใน VS2012; เพียงใช้คุณสมบัติการแมปการเปลี่ยนแปลง:

  1. สร้างโฟลเดอร์ที่คุณต้องการย้ายโซลูชันไป
  2. เช็คอินไฟล์โครงการทั้งหมดของคุณ (หากคุณต้องการให้คุณเปลี่ยนแปลง) หรือย้อนกลับไฟล์ที่เช็คเอาต์
  3. ปิดโซลูชัน
  4. เปิด Explorer การควบคุมแหล่งที่มา
  5. คลิกขวาที่โซลูชันแล้วเลือก "ขั้นสูง -> ลบการจับคู่ ... "
  6. เปลี่ยนค่า "Local Folder" เป็นค่าที่คุณสร้างในขั้นตอนที่ 1
  7. เลือก "เปลี่ยน"
  8. เปิดโซลูชันโดยการดับเบิลคลิกใน explorer ตัวควบคุมแหล่งที่มา

2
นั่นคือถ้าคุณใช้ TFS หรือไม่
Martin Ba

1

ใน visual studio comunity 2019 ฉันทำสิ่งที่ Victor David Francisco Enrique พูด แต่จำเป็นต้องลบโฟลเดอร์. vs invisbile เท่านั้น


0

ใน VS 2015

  1. ยกเลิกการโหลดโครงการของคุณในตัวสำรวจโซลูชัน
  2. สร้างโซลูชันใหม่
  3. คัดลอกโครงการไปยังโฟลเดอร์ของโซลูชันใหม่
  4. คลิกขวาที่โซลูชันเพิ่มโครงการที่มีอยู่
  5. ถ้าคุณใช้กรอบงานบางอย่างเช่นMVCคุณอาจต้องเพิ่มการอ้างอิงในตัวจัดการการอ้างอิง

0

ฉันคิดออกว่าลองนี่มันใช้ได้กับฉัน

ใน visual Studio 2017 community edition จะสร้างโครงการที่เส้นทางนี้ "C: \ Users \ mark \ source \ repos \ mipmaps \ mipmaps" นี่จะเป็นการสร้างการเข้าถึงไฟล์ที่ถูกปฏิเสธ

ตอนนี้คุณสามารถแก้ไขได้ด้วยวิธีนี้

ปิดกระบวนการสตูดิโอภาพของคุณ จากนั้นค้นหาโครงการของคุณและคัดลอกโฟลเดอร์โครงการ แต่ก่อนอื่นให้สร้างโฟลเดอร์ย่อยชื่อโครงการภายในโฟลเดอร์ Visual Studio 2017 ของคุณในเอกสาร ถัดไปวางโฟลเดอร์โครงการไว้ในโฟลเดอร์ Visual Studio 2017 Project ไม่ใช่โฟลเดอร์ Visual Studio 2017 หลักคุณควรเข้าไปในโฟลเดอร์ย่อยที่ชื่อว่า Project ถัดไปรีสตาร์ท Visual Studio 2017 จากนั้นเลือกเปิดโปรเจ็กต์โซลูชันจากนั้นค้นหาโปรเจ็กต์ที่คุณวางในโฟลเดอร์ visual Studio 2017 โปรเจ็กต์ของคุณจากนั้นทำความสะอาดโปรเจ็กต์และสร้างมันใหม่ หวังว่านี่จะช่วยคนอื่นได้ ไม่แน่ใจว่าทำไม Microsoft จึงคิดว่าการสร้างโครงการของคุณในเส้นทางที่จำเป็นต้องมีการอนุญาตในการเขียนนั้นเกินกว่าฉัน


0

ฉันต้องการให้การเปลี่ยนแปลงใน Git แสดงเป็นย้าย / เปลี่ยนชื่อแทนที่จะลบและเพิ่ม ดังนั้นฉันจึงทำคอมโบด้านบนและโพสต์นี้

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

และปรับเส้นทางของโครงการและชุดประกอบจาก nuget Pkg ในไฟล์ sln ผ่านโปรแกรมแก้ไขข้อความ


0
  1. คัดลอกโฟลเดอร์โครงการไปยังปลายทางใหม่
  2. ลบโครงการของคุณออกจากโซลูชัน (คลิกขวาที่โครงการใน "โซลูชัน Explorer" และเลือก "ลบ")
  3. จากนั้นเพิ่มโครงการที่มีอยู่ให้กับโซลูชัน (คลิกขวาที่โครงการใน "โซลูชัน Explorer" และเลือก "เพิ่ม" จากนั้น "โครงการที่มีอยู่"
  4. เปลี่ยนพา ธ ไปยังโฟลเดอร์ "แพ็คเกจ" ในไฟล์ "YourProjectName.csproj" (เปิดในแผ่นจดบันทึกและเปลี่ยนเส้นทางสำหรับแพ็คเกจที่เชื่อมโยง)

0

สิ่งนี้ใช้ได้กับฉัน vb2019 ฉันคัดลอกโฟลเดอร์โครงการต้นทางของฉัน จากนั้นฉันก็วางโครงการและเปลี่ยนชื่อโฟลเดอร์เป็นอะไรก็ได้ เพื่อที่จะแยกความสัมพันธ์กลับไปยังโฟลเดอร์โครงการต้นทางฉันเปลี่ยนชื่อโฟลเดอร์ซอร์สชั่วคราว ฉันเปิดโครงการปลายทางของฉัน เส้นทางไปยังแบบฟอร์มและโมดูลถูกค้นพบอีกครั้งในโฟลเดอร์ท้องถิ่น ฉันผ่านทุกรูปแบบและโมดูลของฉันเพื่อให้แน่ใจว่าพวกเขากำลังทำงานอยู่ ฉันทำโครงการ ฉันปิดโครงการ ฉันเปลี่ยนชื่อโฟลเดอร์โครงการต้นฉบับกลับไม่ใช่ชื่อเดิม ฉันสามารถเปิดทั้งสองโครงการในเวลาเดียวกันโดยไม่มีข้อผิดพลาด


โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.