โครงการคัดลอก Visual Studio


141

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

มีเครื่องมือใน VS เพื่อทำสิ่งนี้หรือไม่? ฉันใช้ VS 2008

คำตอบ:


144

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


25
จะเกิดอะไรขึ้นกับ ProjectGUID
Lars Corneliussen

4
อย่าลืมลบไฟล์ svn หากคุณมี (ฉันทำ) -> weblogs.asp.net/jgalloway/archive/2007/02/24/…
qbantek

51
GUID ของโครงการได้รับการปรับปรุงโดย VS โดยอัตโนมัติหากมีโครงการอื่นที่มี GUID เดียวกันอยู่ในโซลูชันเดียวกัน
เซบาสเตียน Krysmanski

3
ฉันกำลังลองทำอยู่ แต่ไม่เปลี่ยนชื่อเนมสเปซของแอปพลิเคชัน ไม่ใช่สิ่งที่ฉันกำลังมองหา
Jason

3
GUID โครงการไม่อัปเดตอัตโนมัติโดย VS ในชุมชน 2017 เวอร์ชัน 15.8.4 ที่จริงแล้วมันเป็นอย่างไรถ้า AssemblyInfo.cs ของคุณอยู่ในการควบคุมซอร์สโค้ด?
PeterVermont

134

เพียงแค่สร้างแม่แบบ ;

จากโครงการที่คุณเลือก: โครงการ - เทมเพลตการส่งออก

ตัวช่วยสร้างจะช่วยให้คุณกำหนด

  • ชื่อเทมเพลต
  • คำอธิบายเทมเพลต
  • ไอคอน
  • ดูตัวอย่างรูปภาพ

จากนั้นจะบีบอัดโครงการของคุณลงในไดเรกทอรี 'เทมเพลตที่ส่งออกของฉัน' คุณยังมีตัวเลือกในการทำให้แม่แบบของคุณพร้อมใช้งานเมื่อคุณสร้างโครงการใหม่

เมื่อคุณใช้แม่แบบของคุณเพื่อสร้างโครงการใหม่เนมสเปซจะถูกต้องสำหรับ 'your_new_project_name' ตลอดทุกไฟล์การอ้างอิงทั้งหมดถูกต้องทุกอย่างสมบูรณ์แบบ :)

คุณสามารถส่งไฟล์. zip ไปให้ใครก็ได้และพวกเขาจะต้องคัดลอก (ไม่ใช่คลายซิป) ไฟล์. zip ลงในไดเร็กทอรี Templates \ ProjectTemplates เพื่อให้พวกเขาใช้ด้วย

ฉันสร้างเทมเพลต ASP.NET MVC กับโฟลเดอร์หน้าเลย์เอาต์โมเดลอื่น ๆ จัดเรียงอย่างที่ฉันชอบ

หมายเหตุ:
หากคุณมีโฟลเดอร์ว่างในโครงการของคุณจะไม่ถูกเพิ่มลงในเทมเพลตดังนั้นฉันเพิ่งเพิ่มคลาสว่างที่เหมาะสมกับแต่ละโฟลเดอร์และรูปภาพตัวอย่างสำหรับโฟลเดอร์รูปภาพ


28
IMO คำตอบที่ดีที่สุด
fischgeek

14
ใน VS2017 เทมเพลตการส่งออกอยู่ภายใต้รายการเมนูระดับบนสุดของโครงการ
Choco

3
มันมีประโยชน์อย่างไม่น่าเชื่อฉันไม่เคยรู้เรื่องนี้มาก่อน ขอบคุณ!
Aldarrion

5
นี่ควรเป็นคำตอบที่เลือก ง่ายมาก! กระบวนการนี้ควรคัดลอกลงในโฟลเดอร์ Templates \ ProjectTemplates ของคุณเช่นกัน ฉันต้องเริ่มต้น Visual Studio ใหม่เพื่อดูในกล่องโต้ตอบการสร้างโครงการ
midoriha_senpai

3
เมื่อถึงเวลาต้องอิมพอร์ตเทมเพลตเพื่อสร้างโครงการใหม่ฉันไม่สามารถหาวิธีทำได้ กลับกลายเป็นว่าฉันต้องใช้แถบค้นหาในกล่องโต้ตอบโครงการใหม่เพื่อค้นหาแม่แบบ
Tawab Wakil

6

ฉันเดาว่านี่เป็นสิ่งที่คุณทำบ่อย ๆ มียูทิลิตี้เล็ก ๆ ที่ไม่ให้สัญญากับคุณ: ฉันไม่ได้ใช้มันดังนั้นไม่แน่ใจว่ามันดีแค่ไหน:

http://www.kinook.com/CopyWiz/

นอกจากนี้ยังมีโครงการนี้ใน CodePlex:

http://clone.codeplex.com/

ฉันอาจจะลองโครงการ codeplex และถ้ามันไม่ทำงานฉันจะเปลี่ยนชื่อทุกอย่างด้วยตนเองและแก้ไขไฟล์ sln


แอพ codeplex "Solution Clone" ทำงานได้ค่อนข้างดี คัดลอกและเปลี่ยนชื่อไฟล์โซลูชันทั้งหมดและเก็บการอ้างอิงทั้งหมด สิ่งเดียวที่ฉันต้องทำคือ repoint เป็นไฟล์โครงการที่ถูกเปลี่ยนชื่อใหม่หลังจากเปิดโซลูชันที่คัดลอกแล้วเปลี่ยนชื่อแอสเซมบลีและรูทเนมสเปซในคุณสมบัติของโครงการ มันง่ายกว่าการทำทุกอย่างด้วยตนเอง
Fütemire

4

มันเป็นอย่างสูงที่ไม่แนะนำให้เลือกที่จะคัดลอกโครงการเลยเพราะบาง config ไฟล์รูปแบบภายในเช่น.csproj, .vspsccฯลฯ อาจ (และส่วนใหญ่อาจจะ) ชี้ไปที่การอ้างอิงที่เป็นเส้นทางสถานที่และอื่น ๆ การแก้ปัญหาก่อนหน้านี้ / สถานที่ในระบบหรือ TFS ถ้าคุณไม่เชี่ยวชาญในการอ่านไฟล์เหล่านี้และแก้ไขการอ้างอิงอย่าพยายามคัดลอกโครงการ

คุณสามารถสร้างโครงการโครงกระดูกประเภทเดียวกันกับที่คุณตั้งใจจะคัดลอกซึ่งจะสร้างไฟล์. csproj, .vspscc ที่เหมาะสม ตอนนี้คุณสามารถคัดลอกไฟล์คลาสสคริปต์และเนื้อหาอื่น ๆ จากโครงการก่อนหน้าได้เนื่องจากจะไม่มีผลกระทบ สิ่งนี้จะช่วยให้มั่นใจว่าการสร้างและการควบคุมเวอร์ชันราบรื่น (หากคุณเลือกที่จะสนใจ)

ต้องบอกว่าทั้งหมดนี้ให้ฉันให้คุณวิธีการคัดลอกโครงการใด ๆ ในลักษณะที่ชาญฉลาด:

  1. ไปที่โครงการที่คุณต้องการคัดลอกในการแก้ปัญหา Explorer และคลิกขวา
  2. ตอนนี้เลือก' เปิดโฟลเดอร์ใน File Explorer ' (สมมติว่าคุณมีโซลูชันที่แมปกับเส้นทางในเครื่องบนดิสก์ของคุณ)
  3. เลือกโปรเจ็กต์ที่คุณต้องการทำซ้ำเป็นโฟลเดอร์ทั้งหมด (รวมถึงการขึ้นต่อกันทั้งหมด, ไฟล์ bin .vspscc, ไฟล์. csproj)
  4. วางไว้ในตำแหน่งที่คุณต้องการ (อาจเป็นโฟลเดอร์โซลูชันเดียวกันหรือโฟลเดอร์โซลูชันอื่น ๆ หากอยู่ในโฟลเดอร์โซลูชันเดียวกันคุณจะต้องเปลี่ยนชื่อไฟล์ด้วยเช่นกัน. csproj และไฟล์ภายในอื่น ๆ เป็นชื่อใหม่ )
  5. ไม่ย้อนกลับไปที่ Visual Studio คลิกขวาบนโซลูชัน> เพิ่ม> โครงการที่มีอยู่ ...
  6. เรียกดูและเลือกไฟล์โครงการ (ไฟล์. csproj) จากตำแหน่งที่คุณวางไว้และเลือก ' เปิด '
  7. ไฟล์นี้จะปรากฏในตัวสำรวจโซลูชันเพื่อให้คุณใช้งานได้

ตอนนี้คุณอาจต้องแก้ไขข้อผิดพลาดของบิลด์บางอย่างซึ่งอาจเกิดจากการอ้างอิงและสิ่งที่ซ้ำกัน / หายไป


2
อัปเดต: คำตอบที่ดีที่สุดในปี 2019 เป็นคำตอบด้านล่างโดย @Shane การสร้าง VS Templates เป็นวิธีที่สมบูรณ์แบบในการโคลนโครงการโดยไม่มีปัญหาในการอ้างอิง
Vikram K

3

ฉันทำตามขั้นตอนเหล่านี้และฉันใช้เครื่องมือพัฒนาที่เรียกว่าResharperซึ่งยอดเยี่ยมมาก:

ดังนั้น,

  1. คัดลอกโฟลเดอร์โครงการที่มีอยู่ไปยังปลายทางที่คุณต้องการ
  2. ไปที่การควบคุมแหล่งที่มาและด้วยการคลิกขวาเพียงแค่ไปที่โฟลเดอร์รากที่คุณต้องการและเลือก"เพิ่มรายการไปยังโฟลเดอร์ ... " จากนั้นตัวช่วยสร้างจะปรากฏขึ้นเพื่อเลือกไฟล์ที่จะคัดลอก (ไม่จำเป็นสำหรับไฟล์บางไฟล์และ ตัวช่วยสร้างจะแนะนำคุณด้วยเหตุผลนั้นตามค่าเริ่มต้น)
  3. เปลี่ยนชื่อของไฟล์โซลูชัน (* .sln)
  4. เปลี่ยนชื่อของโครงการย่อยถ้ามีอยู่
  5. ใช้Resharperเพื่อเปลี่ยนเนมสเปซที่เชื่อมโยงชื่อ (ฉันจะทำงานที่สกปรกด้วยความปลอดภัยโดยอัตโนมัติ) วิธีอื่นคือการเปลี่ยนเนมสเปซทั้งหมดด้วยตนเองด้วยชื่อใหม่
  6. การกระทำเดียวกันกับชื่อวิธีการ
  7. ตรวจสอบคุณสมบัติของโซลูชันหากคุณต้องการเปลี่ยน

แค่นั้นแหละ. คุณพร้อม !!!


1

วิธีที่ดีที่สุดคือการสร้างโครงการใหม่ตั้งแต่เริ่มต้นจากนั้นไปที่โฟลเดอร์ที่มีไฟล์โครงการที่คุณต้องการคัดลอก (โครงการ form1 ทุกอย่างยกเว้นโฟลเดอร์) เปลี่ยนชื่อไฟล์ (ยกเว้นไฟล์ form1) ตัวอย่างเช่น: ฉันคัดลอกไฟล์ Ch4Ex1 ไปยังโครงการ Ch4Ex2 ของฉัน แต่เปลี่ยนชื่อไฟล์เป็น Ch4Ex2 เป็นครั้งแรก คัดลอกและวางไฟล์เหล่านั้นใน Solution Explorer สำหรับโครงการใหม่ใน Visual Studio จากนั้นก็เขียนทับไฟล์และคุณควรจะไป!

หัวข้อเก่า แต่ฉันหวังว่าจะช่วยให้ทุกคนมองหาคำตอบนี้!


0

ฉันมีโครงการที่มีไฟล์ต้นฉบับอยู่ในโฟลเดอร์ด้านล่างโฟลเดอร์โครงการ เมื่อฉันคัดลอกโฟลเดอร์โครงการโดยไม่มีโฟลเดอร์ต้นทางและเปิดโครงการคัดลอกไฟล์ต้นฉบับจะไม่หายไป แต่พบได้ที่ตำแหน่งเดิม ฉันปิดโครงการคัดลอกโฟลเดอร์ต้นทางแล้วเปิดโครงการอีกครั้ง ตอนนี้โครงการอ้างอิงไฟล์ต้นฉบับที่คัดลอกมาอย่างน่าอัศจรรย์ (ทั้งพา ธ ใหม่ปรากฏขึ้นที่ "บันทึกเป็น" และการเปลี่ยนแปลงในไฟล์ถูกบันทึกในเวอร์ชันที่คัดลอกแล้ว)

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

ฉันลองด้วย VS Express 2012


0

วิธีแก้ปัญหาของฉันแตกต่างไปเล็กน้อย - คอมพิวเตอร์ที่มีแพ็คเกจอยู่นั้นเสียชีวิตดังนั้นฉันจึงถูกบังคับให้สร้างมันบนคอมพิวเตอร์เครื่องอื่น

สิ่งที่ฉันทำ (ใน VS 2008) คือการเปิดไฟล์ต่อไปนี้ในไดเรกทอรีของฉัน:

                  - <package name>.djproj
                  - <package name>.dtproj.user
                  - <package name>.dtxs
                  - <package name>.sln
                  - Package.dtsx

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


0

หลังจากลองใช้วิธีแก้ไขปัญหาและสร้างสำเนาสำหรับโครงการ MVC

สำหรับโครงการ MVC โปรดอัปเดตหมายเลขพอร์ตในไฟล์. csproj คุณสามารถช่วย iis applicationhost.config เพื่อตรวจสอบหมายเลขพอร์ต หมายเลขพอร์ตเดียวกันจะทำให้เกิดปัญหาการโหลดแอสเซมบลีใน IIS


0

ทำตามคำตอบของ Shane ด้านบน (ซึ่งใช้งานได้ดีมาก BTW) ...

คุณอาจพบสามเหลี่ยมสีเหลืองฆ่าในรายการอ้างอิง ส่วนใหญ่เหล่านี้จะถูกกำจัดด้วยและBuild->Clean SolutionBuild->Rebuild Solution

ฉันเคยมีการอ้างอิง Google API บางอย่างที่ค่อนข้างดื้อกว่า

การพยายามติดตั้งแพคเกจ NuGet ของรุ่นเดิมใหม่ไม่ทำงาน
Visual Studio คิดว่าคุณได้ติดตั้งแล้ว

ในการหลีกเลี่ยงปัญหานี้:
1: เขียนเวอร์ชันดั้งเดิม
2: ติดตั้งเวอร์ชันที่สูงกว่าถัดไป ... จากนั้นถอนการติดตั้ง
3: ติดตั้งเวอร์ชันดั้งเดิมจากขั้นตอน # 1


0

ฉันใช้ Visual Studio 2013 โดยที่ Project> Export Template ไม่ใช่ตัวเลือก นี่คือสิ่งที่ฉันใช้ในการโคลนโครงการ

จากโซลูชันของคุณ: ไฟล์> เอ็กซ์พอร์ตเทมเพลต> เลือกโปรเจ็กต์เพื่อสร้างเทมเพลตให้จดบันทึกเส้นทาง

ดาวน์โหลดและติดตั้ง VS 2013 SDK ที่นี่

สร้างโครงการ VSIX ใหม่ภายใต้ Extensibility

จาก VSIXManifest Dialog เลือกแท็บสินทรัพย์

กรอกข้อมูลลงในกล่องข้อความผู้แต่ง

เลือก "เทมเพลตโครงการ" สำหรับประเภทและเรียกดูเพื่อเพิ่มเทมเพลตที่ส่งออก (บันทึกที่เส้นทางที่คุณจดบันทึกไว้ในขั้นตอนที่ 1)

บันทึกและสร้างโครงการ VSIX ไปที่โฟลเดอร์ ... / bin / Debug ของโครงการ VSIX แล้วดับเบิ้ลคลิกเพื่อเรียกใช้ไฟล์. vsix

เริ่มต้นอินสแตนซ์ใหม่ของ Visual Studio และคุณควรเห็นแม่แบบของคุณภายใต้ประเภทโครงการที่แม่แบบของคุณเป็น สร้างโครงการใหม่จากเทมเพลตของคุณ

คุณจะต้องเพิ่มการอ้างอิง dll ใด ๆ อีกครั้ง


0

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

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