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


688

โซลูชันปัจจุบันของฉันสำหรับการเปลี่ยนชื่อโฟลเดอร์โครงการคือ:

  • ลบโปรเจ็กต์ออกจากโซลูชัน
  • เปลี่ยนชื่อโฟลเดอร์ภายนอก Visual Studio
  • เพิ่มโครงการอีกครั้งลงในโซลูชัน

มีวิธีที่ดีกว่า?


4
ไม่มีวิธีง่ายๆในการทำเพียงคลิกเดียว ไม่ได้มาจากภายใน Visual Studio แต่อย่างใด
Matt Hanson

11
ไม่มีใครทราบว่า Microsoft จะแก้ไขปัญหานี้สำหรับรุ่น 2010 หรือไม่
Vidar

29
เห็นได้ชัดว่าไม่เนื่องจากมันเป็น 3 ปีต่อมาและฉันต้องผ่านกระบวนการของ andersjanmyr :)
sichinumi

4
คำขอคุณลักษณะสตูดิโอภาพ: visualstudio.uservoice.com/forums/121579-visual-studio/ ......ไปและโหวต!
Tim Abell

2
เห็นได้ชัดว่าการลงคะแนนล้มเหลวเนื่องจากคุณสมบัติยังไม่ได้รับการสนับสนุนในปี 2018 มีการใช้กี่กิกะไบต์ในการไม่เปลี่ยนแปลงไฟล์ เห็นได้ชัดว่า 17gbs 17.
Joseph Franciscus

คำตอบ:


748

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


การเปลี่ยนชื่อของโครงการโฟลเดอร์ , ไฟล์ ( .*proj) และชื่อที่ใช้แสดงใน Visual Studio:

  • ปิดโซลูชัน
  • เปลี่ยนชื่อโฟลเดอร์ภายนอก Visual Studio (เปลี่ยนชื่อใน TFS หากใช้การควบคุมแหล่งที่มา)
  • เปิดโซลูชันโดยไม่สนใจคำเตือน (ตอบ "ไม่" ถ้าระบบขอให้โหลดโครงการจากแหล่งควบคุม)
  • ผ่านโครงการที่ไม่พร้อมใช้งานทั้งหมดและ ...
    • เปิดหน้าต่างคุณสมบัติสำหรับโครงการ (เน้นโครงการและกดAlt+ EnterหรือF4หรือคลิกขวา> คุณสมบัติ)
    • ตั้งค่าคุณสมบัติ ' เส้นทางของไฟล์ ' ไปยังตำแหน่งใหม่
      • หากคุณสมบัติไม่สามารถแก้ไขได้ (เช่นเดียวกับใน Visual Studio 2012) ให้เปิด.slnไฟล์โดยตรงในโปรแกรมแก้ไขอื่นเช่นNotepad ++และอัปเดตพา ธ ที่นั่นแทน (คุณอาจต้องตรวจสอบโซลูชันก่อนใน TFS เป็นต้น)
    • โหลดโครงการใหม่ - คลิกขวา> โหลดโครงการอีกครั้ง
    • เปลี่ยนชื่อที่แสดงของโครงการโดยเน้นมันและกดF2หรือคลิกขวา> เปลี่ยนชื่อ

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

หากคุณทำตามขั้นตอนเหล่านี้คุณอาจพิจารณาเปลี่ยนชื่อต่อไปนี้เพื่อให้ตรงกับ:

  1. การชุมนุม
  2. Default / Root Namespace
  3. Namespace ของไฟล์ที่มีอยู่ (ใช้เครื่องมือ refactor ใน Visual Studio หรือเครื่องมือ namespaces ที่ไม่สอดคล้องกันของ ReSharper )

ลองพิจารณาแก้ไขค่าของแอ็ตทริบิวต์ชุดประกอบต่อไปนี้:

  1. AssemblyProductAttribute
  2. AssemblyDescriptionAttribute
  3. AssemblyTitleAttribute

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

10
เมื่อใช้ TFS ขั้นตอนที่ 2 เป็นจริงในการเปลี่ยนชื่อโฟลเดอร์ในการควบคุมแหล่งที่มาและได้รับล่าสุดก่อนที่จะเปิด sln
Amy Patterson

3
คุณสมบัติ File Path จะสามารถแก้ไขได้ใน VS2010 หลังจากเปลี่ยนชื่อโฟลเดอร์แล้ว (และ VS ไม่สามารถหาโครงการได้)
Jimmy

11
สิ่งนี้ไม่ได้ผลสำหรับฉันใน VS 2012 คุณสมบัติเป็นแบบอ่านอย่างเดียว ฉันต้องเปิดไฟล์. sln เป็นข้อความ
Grault

3
อ๊ะ! ทุกปัญหาในการเปลี่ยนชื่อโฟลเดอร์นี้! สิ่งนี้ง่ายกว่าใน MS-DOS!
Kokodoko

97

มีวิธีการอื่นในการทำเช่นนี้โดยใช้ไฟล์ * .sol, * csproj

  1. เปิดไฟล์โซลูชันของคุณ
  2. ค้นหา * .csproj ที่คุณต้องการเปลี่ยน
  3. มันจะเป็นเช่นนี้ (เทียบกับไฟล์ * .sol):

    Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Shani.Commands.Impl", "Shani.Commands.Impl\Shani.Commands.Impl.csproj", "{747CFA4B-FC83-419A-858E-5E2DE2B948EE}"

  4. และเพียงแค่เปลี่ยนส่วนแรกเป็นไดเร็คทอรี่ใหม่เช่น:

    Impl\Shani.Commands.Impl\Shani.Commands.Impl.csproj

  5. แน่นอนอย่าลืมย้ายโครงการทั้งหมดไปยังไดเรกทอรีนั้น


17
สิ่งนี้ใช้ได้กับฉันมากกว่าคำตอบที่ยอมรับซึ่งไม่ได้ผลเพราะคุณสมบัติ FilePath เป็นแบบอ่านอย่างเดียวสำหรับฉัน
TJKjaer

1
ขอบคุณสิ่งนี้ช่วยได้มาก ตรวจสอบให้แน่ใจว่าเปลี่ยนค่า RootNamespace และ AssemblyName ด้วย
DevDave

@TJKjaer Same
dzenesiz

สิ่งนี้ไม่ได้ผลสำหรับฉันใน VS2019 ให้คำเตือนเกี่ยวกับการอ้างอิงโครงการที่ไม่มีอยู่และรวบรวมข้อผิดพลาดเกี่ยวกับเนมสเปซและคลาสที่หายไปในโครงการที่อ้างอิง
Jeff Walker Code Ranger

สิ่งนี้ใช้ได้กับฉันใน Visual Studio 2019 ด้วยโครงการ C # มันเป็นทางออกที่ค่อนข้างง่าย สำหรับผู้ที่อาจมีปัญหาเมื่อพยายามรวบรวมฉันขอแนะนำให้คุณสร้างโครงการใหม่ทั้งหมดแทนที่จะรวบรวมเท่านั้น
Silva

95

ตรงไปตรงมาใน Visual Studio 2015 (อาจใช้งานได้ในรุ่นที่เก่ากว่า)

  1. ในโซลูชัน Explorer คลิกขวาที่โซลูชันหลักเปลี่ยนชื่อ
  2. ในโซลูชัน Explorer คลิกขวาที่โครงการ (ใต้โซลูชัน) → เปลี่ยนชื่อ
  3. ในโซลูชัน Explorer คลิกสองครั้งหรือคลิกขวาที่คุณสมบัติ →ไปที่แท็บแอปพลิเคชันเปลี่ยนชื่อแอสเซมบลีและเนมสเปซเริ่มต้นให้ตรงกัน
  4. หากคุณต้องการเปลี่ยนชื่อเนมสเปซด้วยให้เปิดไฟล์คลาสของคุณ คลิกขวาที่เนมสเปซ→ เปลี่ยนชื่อ ...... สิ่งนี้ควรค้นหาและแทนที่การอ้างอิงทั้งหมดไปยังเนมสเปซของคุณตลอดทั้งโครงการ
  5. ปิดโครงการ→เปลี่ยนชื่อ โฟลเดอร์โครงการโฟลเดอร์โครงการ
  6. แก้ไข.slnไฟล์ในNotepadและเปลี่ยนเส้นทางไปยัง csproj คือ, →fu\bar.csprojbar\bar.csproj

3
คุณลืมปรับปรุงการอ้างอิงโครงการในโครงการที่ขึ้นต่อกัน (ถ้ามี)
Steven Liekens

1
@JohnPeters เท่าที่ฉันเห็นคำตอบนี้ยังไม่ได้รับการแก้ไข ขั้นตอนที่ 5 อธิบายการเปลี่ยนชื่อโฟลเดอร์ดังนั้นการทำตามขั้นตอนเหล่านี้จะเปลี่ยนชื่อโฟลเดอร์จริงด้วย
Philip Stratford

อย่าลืมใช้ขั้นตอนที่ 4 กับโฟลเดอร์โครงการย่อย (นั่นเป็นขั้นตอนเดียวที่ขาดหายไปสำหรับฉันเพื่อให้ขั้นตอนที่ 6 ใช้งานได้)
Felipe Gutierrez

54

ฉันต่อสู้กับสิ่งนี้ได้ไหม น่าเสียดายที่ไม่มีโซลูชันคลิกเดียวใน Visual Studio แต่ถ้าคุณกำลังใช้งานVisual Studio 2012และโครงการของคุณอยู่ภายใต้การควบคุมของแหล่งข้อมูลกับTeam Foundation Server ต่อไปนี้เป็นวิธีที่ฉันได้ทำงานในขณะที่รักษาประวัติแหล่งที่มา:

(ให้แน่ใจว่าคุณอ่านความคิดเห็นของ @ mjv ด้านล่างในขณะที่เขาบันทึกว่าคุณสามารถข้ามขั้นตอนที่ 5-10)

  1. ตรวจสอบให้แน่ใจว่าคุณได้ตรวจสอบการเปลี่ยนแปลงทั้งหมดแล้วดังนั้นคุณจึงไม่มีการเปลี่ยนแปลงที่รอดำเนินการ
  2. นำโครงการจากการแก้ปัญหาโดยการคลิกขวาและเลือกลบ
  3. ตอนนี้ใน Windows Explorer เปลี่ยนชื่อโฟลเดอร์โครงการ
  4. กลับไปที่ Visual Studio และในโซลูชัน Explorer คลิกขวาที่การแก้ปัญหาและเลือกAdd -> โครงการที่มีอยู่ เลือกไฟล์โครงการสำหรับโครงการที่คุณลบในขั้นตอนที่ 2 ซึ่งควรอยู่ในโฟลเดอร์ที่เปลี่ยนชื่อ
  5. ขณะนี้โครงการกลับมาอยู่ในโซลูชัน แต่ดูเหมือนว่าโครงการจะไม่ถูกเพิ่มในการควบคุมแหล่งที่มา ในการแก้ไขปัญหาให้เปิดตัวควบคุมแหล่งข้อมูล
  6. ค้นหาโฟลเดอร์โครงการใน Source Control Explorer ที่สอดคล้องกับโฟลเดอร์โครงการบนดิสก์ของคุณซึ่งคุณเปลี่ยนชื่อในขั้นตอนที่ 3
  7. เปลี่ยนชื่อโฟลเดอร์ใน Explorer ตัวควบคุมแหล่งที่มาดังนั้นจึงมีชื่อเดียวกันกับโฟลเดอร์โครงการบนดิสก์
  8. ทีนี้ลองดูการเปลี่ยนแปลงที่รออยู่ของคุณ คุณควรมีการเปลี่ยนแปลงไฟล์โซลูชันและการดำเนินการเปลี่ยนชื่อในโฟลเดอร์โครงการ
  9. ทำการสร้างใหม่และตรวจสอบให้แน่ใจว่าทุกอย่างรวบรวมอย่างถูกต้อง หากคุณมีการอ้างอิงระหว่างโครงการกับโครงการที่คุณเปลี่ยนชื่อคุณจะต้องเพิ่มพวกเขาอีกครั้งในแต่ละโครงการที่อ้างอิง
  10. คุณควรจะพร้อมทั้งหมดในขณะนี้ ไปและตรวจสอบทุกอย่างค่ะ

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

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

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


10
ขอบคุณสำหรับการแนะนำขั้นตอนการทำงานVS2012! ทราบว่าคุณอาจหลีกเลี่ยงขั้นตอน 5-10 (คือไม่ต้องนำกลับมาเปลี่ยนชื่อโฟลเดอร์ภายในควบคุมแหล่งที่มา) ถ้าแทนคุณปิดการแก้ปัญหาและแล้วเปลี่ยนชื่อโฟลเดอร์ภายในมากกว่าVS' Source Control Explorer Windows Explorer
mjv

2
ขั้นตอนเหล่านี้ได้ใกล้เคียง แต่เปลี่ยนสถานที่ตั้งโฟลเดอร์ด้วย Windows Explorer (เรา) ก่อนที่จะเปลี่ยนชื่อในการควบคุมแหล่ง Explorer (SCE) Folder already existsทำให้เกิดข้อผิดพลาด: ดังนั้นฉันต้องเปลี่ยนชื่อโฟลเดอร์อีกครั้งWEจากนั้นเปลี่ยนเป็นSCEจากนั้นคัดลอกไฟล์ลงในโฟลเดอร์นั้นก่อนที่มันจะทำงาน ดังนั้นทำตามความคิดเห็นจาก mjv ด้านบน ฉันยังไม่ได้คิดเกี่ยวกับการเปลี่ยนชื่อไฟล์โครงการจริง (ไม่ใช่เฉพาะใน VS) ซึ่งฉันทำในภายหลังทำให้ฉันทำขั้นตอนเหล่านี้ซ้ำอีกครั้ง
CaptainBli

วิธีการนี้กับความคิดเห็นของ mjv ทำงานใน Perforce ด้วยตัวเลือกคลิกขวาเปลี่ยนชื่อ / ย้ายเช่นกัน
Santos

คุณสามารถหลีกเลี่ยงการทำลายการอ้างอิงโครงการดูstackoverflow.com/a/10853509/10245
Tim Abell

@TimAbell คุณลองขั้นตอนนั้นใน VS2012 แล้วมันใช้งานได้สำหรับคุณหรือไม่? ก่อนที่ฉันจะเขียนคำตอบของฉันในตอนแรกฉันพยายาม แต่ก็ไม่ได้ผลสำหรับฉันเพราะเส้นทางโครงการในหน้าต่างคุณสมบัติอ่านได้เสมอเท่านั้น และมันก็ไม่สามารถแก้ไขไฟล์ SLN ได้เช่นกัน
René

34

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

Voilà :)


2
การใช้ VS2015 ชื่อคุณสมบัติ "คุณสมบัติของโครงการที่ยกเลิกการโหลด" คือ "เส้นทางไฟล์" และค่าไม่สามารถแก้ไขหรือเรียกดูได้
วิลเลียม

29

วิธีที่ง่ายกว่าคือ:

  1. คลิกขวาที่โครงการและเปลี่ยนชื่อ
  2. (ทางเลือก) เปิดการตั้งค่าคุณสมบัติของโครงการและแก้ไขชื่อชุดประกอบ (และเป็นทางเลือกเนมสเปซเริ่มต้น) เพื่อใช้ชื่อโครงการใหม่
  3. (ไม่บังคับ) เลือกชื่อเนมสเปซในไฟล์ต้นฉบับคลิกขวาแล้วเลือกRefactor / Renameเพื่อเปลี่ยนชื่อเนมสเปซทั่วโลกเป็นชื่อโครงการใหม่
  4. (ทางเลือก) เปิดไฟล์ AssemblyInfo.cs และเปลี่ยนชื่อชุดประกอบให้ตรงกัน
  5. บันทึกและปิดโซลูชัน
  6. ใช้ Windows Explorer เปลี่ยนชื่อโฟลเดอร์โครงการเป็นชื่อใหม่
  7. เปิดไฟล์ SLN ในเท็กซ์เอดิเตอร์และค้นหาการอ้างอิงเดียวกับพา ธ โปรเจ็กต์และเปลี่ยนเพื่อใช้ชื่อโฟลเดอร์ใหม่

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


ขั้นตอนที่ 7 อื่น: เปิดไฟล์ SLN ด้วย VS ละเว้นคำเตือน (คลิก "ตกลง") เลือกโครงการใน Solution Explorer กด F4 อัปเดตพา ธ ไฟล์ ขั้นตอนเพิ่มเติม 0: โซลูชันคลิกขวาและเปลี่ยนชื่อ
Martin Schneider

7
ไม่น่าเชื่อว่า Microsoft ทำอะไรยากได้บ้าง
อเล็กซ์

1
สิ่งนี้ใช้ได้กับฉันใน Visual Studio Community 2017 คำตอบที่ยอมรับไม่ได้ผล (สำหรับฉัน); คุณสมบัติที่จำเป็นต้องเปลี่ยนแปลงนั้นเป็นแบบอ่านอย่างเดียวสำหรับฉันและไม่สามารถเปลี่ยนแปลงได้ในกล่องโต้ตอบคุณสมบัติ
เข้ารหัส

10

ในคำตอบของ andersjanmyrมันง่ายกว่าที่จะเปลี่ยนชื่อโครงการก่อน

  1. เปลี่ยนชื่อโครงการ
  2. ปิดโซลูชัน (บันทึก)
  3. เปลี่ยนชื่อโฟลเดอร์ภายนอก Visual Studio
  4. เปิดโซลูชันโดยไม่สนใจคำเตือน
  5. ผ่านโครงการที่ไม่พร้อมใช้งานทั้งหมดและตั้งค่าคุณสมบัติ 'เส้นทางของไฟล์' ไปยังตำแหน่งใหม่ของไฟล์โครงการของคุณเช่นsomeproject.csproj someproject.csproj
  6. โหลดโครงการซ้ำ

หลังจากดำเนินการตามขั้นตอนเหล่านี้แล้วคุณอาจต้องการเปลี่ยนชื่อการอ้างอิงอื่นเป็นชื่อโครงการเก่าของคุณ

ในคุณสมบัติโครงการอัพเดตชื่อชุดประกอบและชื่อเริ่มต้น

สิ่งนี้จะอัพเดตสิ่งต่อไปนี้ในไฟล์โครงการ ...

<RootNamespace>SomeProjectName</RootNamespace>
<AssemblyName>SomeProjectName</AssemblyName>

... และจะกำจัดข้อผิดพลาด "Namespace ไม่สอดคล้องกับตำแหน่งไฟล์ควรเป็น: 'SomeProjectName'"

เปลี่ยนชื่อรูทเนมสเปซของคุณ (ถ้าคุณมี ReSharper คลิกขวาที่เนมสเปซและไป Refactor -> เปลี่ยนชื่อ)

เปลี่ยนที่เกิดขึ้นทั้งหมดของชื่อโครงการเก่าของคุณในAssemblyInfo.cs


เมื่อสร้างคำตอบนี้คุณสามารถแก้ไขไฟล์โซลูชันด้วยตนเองเพื่อให้พา ธ ไปยังโปรเจ็กต์เป็นพา ธ ใหม่ของคุณและหลีกเลี่ยงคำเตือนเมื่อเปิดโซลูชัน คุณสามารถคลิกโครงการ> คุณสมบัติ> AssemblyInfo เพื่อแก้ไขข้อมูลชุดประกอบจากภายใน VS และหลีกเลี่ยงการแก้ไขไฟล์ AssemblyInfo.cs
H2ONaCl

8

สำหรับ Visual Studio 2017 คุณสามารถใช้ส่วนขยาย Visual Studio ของฉัน:

ดาวน์โหลด

มันจะเปลี่ยนชื่อโครงการใน:

  • โฟลเดอร์ที่ตั้งโครงการ
  • ไฟล์โซลูชัน
  • การอ้างอิงในโครงการอื่น
  • ชื่อชุดประกอบข้อมูล
  • เนมสเปซเริ่มต้น

! น่ากลัว เบื่อกับการเปลี่ยนชื่อด้วยตนเองทั้งหมดที่ฉันต้องทำในอดีต ทำได้ดี. ไม่พบการอ้างอิงสตริงในแพ็คเกจอื่น ไม่แน่ใจว่ามีเจตนาหรือไม่
frostymarvelous

ขอบคุณ. แต่ฉันไม่เข้าใจสิ่งต่อไปนี้: "การอ้างอิงสตริงในแพ็คเกจอื่น" คุณอธิบายได้ไหม
Kuanysh

[assembly: InternalsVisibleTo("MyTests")]ดังนั้นผมจึงมีโครงการทดสอบและผมดังนั้นผมจึงมี เมื่อฉันเปลี่ยนชื่อMyTestsมันไม่ได้เปลี่ยนชื่อการอ้างอิงนั้น อีกครั้งฉันไม่คิดว่าสิ่งนี้จะอยู่ภายใต้ขอบเขตของคุณและง่ายต่อการแก้ไขด้วยตนเอง
frostymarvelous

1
ส่วนขยายนี้สันนิษฐานว่าโฟลเดอร์ปัจจุบันมีชื่อเหมือนกับโครงการ (ก่อนเปลี่ยนชื่อ) หากพวกเขาแตกต่างกันการเปลี่ยนชื่อล้มเหลว :( ฉันยังไม่ได้รับ "เปลี่ยนชื่อเนมสเปซ" ให้ใช้งานโชคดีที่ฉันใช้มันในโซลูชันที่มีขนาดเล็กเท่านั้นมิฉะนั้นเยี่ยมเลย!
savehansson

1
@MassimilianoKraus ฉันทำให้ส่วนขยายเป็นแบบส่วนตัวเนื่องจากความเห็นเชิงลบครั้งล่าสุดโดยไม่มีคำอธิบายเกี่ยวกับตลาด ขอโทษสำหรับสิ่งนั้น. ฉันได้ปรับปรุงลิงค์
Kuanysh

6

ฉันต้องทำเอง (ใช้ Visual Studio 2010) ตามที่บางคนตอบคำถามแล้วขั้นตอนที่ง่ายที่สุดน่าจะเป็น:

  1. ปิดโครงการ Visual Studio
  2. เปิดไฟล์. sln และเปลี่ยนชื่อคำนำหน้าไดเรกทอรีโครงการสำหรับแต่ละเหตุการณ์ที่เกิดขึ้น. csproj
  3. บันทึกไฟล์. sln
  4. เปลี่ยนชื่อไดเรกทอรีโฟลเดอร์โครงการจริงบนฮาร์ดไดรฟ์ของคุณเพื่อให้ตรงกับการเปลี่ยนแปลงของคุณในไฟล์. sln
  5. เปิด. sln (ใน Visual Studio) และสร้างใหม่

5

สำหรับผู้ที่ใช้ Visual Studio + Git และต้องการเก็บประวัติไฟล์ (ทำงานเปลี่ยนชื่อทั้งโครงการและ / หรือโซลูชั่น):

  1. ปิด Visual Studio

  2. ในไฟล์. gitignore ให้ทำซ้ำเส้นทางละเว้นทั้งหมดของโครงการที่คุณต้องการเปลี่ยนชื่อด้วยรุ่นที่เปลี่ยนชื่อของเส้นทางเหล่านั้น

  3. ใช้คำสั่ง Git move ดังนี้:

    git mv <old_folder_name> <new_folder_name>
    

    ดูเอกสารประกอบสำหรับตัวเลือกเพิ่มเติม: https://git-scm.com/docs/git-mv

  4. ในไฟล์. sln ของคุณ: ค้นหาบรรทัดที่กำหนดโครงการของคุณและเปลี่ยนชื่อโฟลเดอร์ในพา ธ บรรทัดควรมีลักษณะดังนี้:

    Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "<Project name>", "<path-to-project>\<project>.csproj"
    
  5. เปิด Visual Studio และคลิกขวาที่โครงการ→ เปลี่ยนชื่อ

  6. หลังจากนั้นให้เปลี่ยนชื่อเนมสเปซ

    ฉันอ่านว่าReSharperมีตัวเลือกบางอย่างสำหรับเรื่องนี้ แต่การค้นหา / แทนที่ง่าย ๆ ก็ทำงานให้ฉัน

  7. ลบเส้นทาง. gitignore เก่า


4

ดูรายการที่ 3 ในบทความที่เชื่อมโยง


  1. ปิดโซลูชันและ IDE
  2. ใน Windows Explorer: เปลี่ยนชื่อไดเรกทอรีเป็นชื่อใหม่
  3. ใน Windows Explorer: เปิดไฟล์. sln ด้วยโปรแกรมแก้ไขข้อความ
  4. เปลี่ยนชื่อไดเรกทอรีเป็นชื่อใหม่และบันทึก
  5. รีสตาร์ท IDE และเปิดโซลูชันจากเมนูไฟล์ไฟล์ล่าสุดหากไม่เริ่มโดยอัตโนมัติ
  6. คลิกที่โฟลเดอร์โครงการใน Solution Explorer และตรวจสอบคุณสมบัติเส้นทางในคุณสมบัติที่ด้านล่าง ตอนนี้จะอ้างอิงไปยังโฟลเดอร์โครงการใหม่

มันใช้งานได้สำหรับฉัน


4

สิ่งที่ทำงานกับฉันใน Visual Studio 2017:

  • ปิดโซลูชันใน Visual Studio
  • เปลี่ยนชื่อไดเรกทอรีของโครงการในโซลูชัน
    • (กดการเปลี่ยนแปลงในการควบคุมแหล่ง - Git ในกรณีของฉัน)
  • แก้ไขไฟล์. sln ในโปรแกรมแก้ไขข้อความ (นอก Visual Studio 2017) เพื่อเปลี่ยนชื่อของไดเรกทอรี
  • เปิดโซลูชันใน Visual Studio อีกครั้ง

มันพูดอะไรบางอย่างเช่น " เพิ่มโครงการอีกครั้ง " ฉันสร้างใหม่ทุกอย่างและทุกอย่างก็ดีไป


1
นอกจากนี้คุณอาจต้องลบโครงการเก่าออกจากการอ้างอิงของโครงการอื่นและเพิ่มโครงการที่เปลี่ยนชื่อใหม่เป็นโครงการใหม่ (คลิกขวาที่โครงการเก่า >> ลบจากนั้นคลิกขวาDependencies>> Add reference>> เลือกโครงการใหม่ของคุณ )
maxshuty

4

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

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

ด้วยเหตุนี้ฉันได้สร้างโครงการเพื่อทำสิ่งนี้ แอปพลิเคชันยังพยายามละเว้นโฟลเดอร์ควบคุมเวอร์ชันเช่น. git, .svn และไฟล์การตั้งค่า. vs ข้อมูลเพิ่มเติมอยู่ใน README

https://github.com/garethrbrown/vs-project-rename

ตัวอย่าง


2
เยี่ยมมาก! โครงการของคุณเป็นเครื่องมือเปลี่ยนชื่อจริง ๆ ฉันคิดว่าสิ่งหนึ่งที่ขาดหายไปจริงๆ: ตัวเลือกทั้งคำที่ตรงกัน
Eliahu Aaron

4

โซลูชันที่พิสูจน์แล้วสำหรับส่วนขยาย Visual Studio สำหรับเครื่องมือข้อมูลสำหรับระบบธุรกิจอัจฉริยะ (SSDT-BI 2013):

  1. ย้ายโฟลเดอร์โครงการไปยังตำแหน่งใหม่ (อย่าเปลี่ยนชื่ออะไรเลย)
  2. ในโซลูชัน Explorer เปลี่ยนชื่อโครงการ / โซลูชัน
  3. ปิด (และบันทึก) โครงการที่เปลี่ยนชื่อใหม่
  4. เปลี่ยนชื่อโฟลเดอร์ของโครงการและไฟล์. sln
  5. ใช้เท็กซ์เอดิเตอร์และเปิดไฟล์โซลูชันโครงการที่เปลี่ยนชื่อใหม่ (.sln) (ฉันใช้Notepad ++ )
  6. ในบรรทัดที่ 6 คุณจะเห็น: "โครงการ {fdjfksdjk4387! ... } =" OLDPROJECT "," OLDFOLDER \ OLDPROJECT.rptproj "เปลี่ยนชื่อทุกอย่างด้วยชื่อใหม่ที่ใช้ในขั้นตอนที่ 4 (เช่น ... =" NEWPROJECT "," NEWFOLDER \ NEWPROJECT.rptproj "... )
  7. แค่นั้นแหละ!

มันได้รับการทดสอบ 100% และทำงานได้อย่างไม่มีที่ติในกรณีของฉัน

หมายเหตุ: ฉันไม่สามารถยืนยันได้ว่ามันทำงานภายใต้แม่แบบโครงการที่แตกต่างกันและรุ่น Visual Studio อื่น ๆ เช่นเคยสำรองข้อมูลทุกอย่างไว้ล่วงหน้า


2

ฉันได้เขียนเครื่องมือขนาดเล็กที่ทำตามขั้นตอนเหล่านี้โดยอัตโนมัติ นอกจากนี้ยังรองรับการโค่นล้มในตอนนี้

ข้อมูลเกี่ยวกับรุ่นปัจจุบันสามารถพบได้ที่Visual Studio โครงการเปลี่ยนชื่อ Infos

รุ่นล่าสุดในขณะนี้สามารถดาวน์โหลดได้จากVisual Studio โครงการเปลี่ยนชื่อหน้าดาวน์โหลด

ข้อเสนอแนะชื่นชมมาก


2

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

คุณเพียงแค่ต้องใส่ไฟล์. vbs ในไดเรกทอรีเดียวกับไฟล์. sln ของการแก้ปัญหา

' Script parameters'
Solution = "Rename_Visual_Studio_Project" '.sln'
Project = "Rename_Visual_Studio_Project" '.csproj'
NewProject = "SUCCESS"

Const ForReading = 1
Const ForWriting = 2

Set objFso = CreateObject("Scripting.FileSystemObject")
scriptDirr = objFso.GetParentFolderName(wscript.ScriptFullName)

' Rename the all project references in the .sln file'
Set objFile = objFso.OpenTextFile(scriptDirr + "\" + Solution + ".sln", ForReading)
fileText = objFile.ReadAll
newFileText = Replace(fileText, Project, NewProject)
Set objFile = objFSO.OpenTextFile(scriptDirr + "\" + Solution + ".sln", ForWriting)
objFile.WriteLine(newFileText)
objFile.Close

' Rename the .csproj file'
objFso.MoveFile scriptDirr + "\" + Project + "\" + Project + ".csproj", scriptDirr + "\" + Project + "\" + NewProject + ".csproj"

' Rename the folder of the .csproj file'
objFso.MoveFolder scriptDirr + "\" + Project, scriptDirr + "\" + NewProject

1

หมายเหตุ : การแก้ไขนี้มีไว้สำหรับ Visual Studio 2008 แต่ควรทำงานได้ที่นี่

  1. ใช้ Windows Explorer เปลี่ยนชื่อทั้งโฟลเดอร์โซลูชัน (โฟลเดอร์พาเรนต์และโฟลเดอร์ย่อย) เป็นชื่อโซลูชันใหม่
  2. ลบ.slnไฟล์ที่อยู่ในโฟลเดอร์พาเรนต์
  3. ใน Visual Studio ให้เลือกเมนูไฟล์เปิดโครงการเปิดโครงการ
  4. เจาะลึกเข้าไปในโฟลเดอร์ใหม่ที่คุณเพิ่งเปลี่ยนชื่อและเปิดไฟล์. csproj (อยู่ในโฟลเดอร์ลูก)
  5. คลิกขวาที่ชื่อโครงการและเปลี่ยนชื่อเป็นสิ่งที่คุณต้องการ (ควรเป็นชื่อเดียวกับโฟลเดอร์ในขั้นตอนที่ 1)
  6. เลือกเมนูไฟล์ ► ปิดโซลูชั่น กล่องโต้ตอบจะถามว่าคุณต้องการบันทึกการเปลี่ยนแปลงใน.slnไฟล์หรือไม่ Yesคลิก
  7. ในการบันทึกแฟ้มเป็นโต้ตอบชี้ไปที่เปลี่ยนชื่อใหม่ผู้ปกครองโฟลเดอร์และคลิกบันทึก (หมายเหตุ: ตรวจสอบให้แน่ใจว่า.slnไฟล์มีชื่อเดียวกับโฟลเดอร์โดยไม่จำเป็น แต่มีความสอดคล้องกัน)

เสร็จสิ้น


1

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



1

ฉันทำตามวิธีของฉัน

  • ปิด Visual Studio 2012
  • เปลี่ยนชื่อไดเรกทอรีย่อยของคุณเป็นชื่อที่ต้องการภายใต้ .sln
  • ลบไฟล์ * .suo
  • เปิดโซลูชันอีกครั้งและแก้ไขคุณสมบัติใด ๆ ของโครงการที่โหลดเพื่อให้ตรงกับชื่อไดเรกทอรีย่อยใหม่

1
  1. เปลี่ยนชื่อโครงการในโซลูชันและโฟลเดอร์โครงการ

  2. ลบโครงการออกจากโซลูชัน

  3. เพิ่มโครงการที่มีอยู่ให้กับโซลูชัน (โครงการที่ถูกเปลี่ยนชื่อของคุณ)

มันใช้งานได้สำหรับฉัน TFS จะติดตามโครงการใหม่ด้วย


1

เปิด. sln ในเท็กซ์เอดิเตอร์และในบรรทัดต่อไปนี้เปลี่ยน <FolderName> เป็นชื่อโฟลเดอร์ใหม่ของคุณโครงการ ("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Ricky", "\ .csproj", " {021CC6B0-8CFB-4194-A103-C19AF869D965}"


3
โปรดอธิบายสาเหตุ / วิธีการทำงาน
Simon.SA

1

ไปที่ไฟล์. sln คลิกขวาเปิดด้วย Notepad ++ (หรือตัวแก้ไขใด ๆ Notepad ++ เป็นวิธีที่เร็วที่สุด) ค้นหาพา ธ เปลี่ยน


0

หลังจากเปลี่ยนชื่อโฟลเดอร์แล้วให้เปิดไฟล์. sln ในNotepadและเปลี่ยนพา ธ เป็นพา ธ ใหม่


0

ปัญหาที่คล้ายกันเกิดขึ้นเมื่อต้องสร้างโครงการใหม่และคุณต้องการชื่อโฟลเดอร์โครงการที่แตกต่างจากชื่อโครงการ

เมื่อคุณสร้างโครงการใหม่มันจะถูกเก็บไว้ที่

./path/to/pro/ject/YourProject/YourProject.**proj

สมมติว่าคุณต้องการเก็บไว้ในjectโฟลเดอร์:

./path/to/pro/ject/YourProject.**proj

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

./path/to/pro/ject/ject.**proj

เมื่อคุณเปลี่ยนชื่อโครงการจากภายใน Visual Studio คุณจะบรรลุเป้าหมายโดยไม่ต้องออก Visual Studio:

./path/to/pro/ject/YourProject.**proj

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


0

ฉันใช้ Visual Studio 2013 และTFS 2013

ฉันทำแบบนี้:

  1. เปิด Visual Studio โดยไม่ต้องเปิดโซลูชันเองและใช้Source Control Explorerเพื่อค้นหาและเปลี่ยนชื่อโฟลเดอร์สำหรับโครงการ
  2. คลิกสองครั้งที่ไฟล์โซลูชันในSource Control Explorerเพื่อเปิดโซลูชัน
  3. คุณได้รับคำถาม: "โครงการได้รับการเพิ่มเมื่อเร็ว ๆ นี้ในการแก้ปัญหานี้คุณต้องการที่จะได้รับจากการควบคุมแหล่งที่มา?" Yesและคุณเลือก
  4. ตอนนี้โครงสร้างโฟลเดอร์และโครงการอยู่ที่นั่น แต่ตอนนี้ไฟล์ดังนั้นตอนนี้คุณจะได้รับเวอร์ชันล่าสุดจากแหล่งควบคุม
  5. พยายามสร้างและยอมรับการเปลี่ยนแปลง

ดังนั้นจึงไม่มีสิ่งที่ windows explorer ในที่สุดคุณสามารถลบไฟล์ในเครื่องทั้งหมดและรับโครงการทั้งหมด (ล้าง) จากการควบคุมแหล่งที่มา
Muris

ฉันเพิ่งค้นพบว่าเป็นไปได้ด้วยเนื่องจากการจัดเรียงโฟลเดอร์ใหม่ไฟล์โซลูชันนั้นจะสร้างโฟลเดอร์ว่างที่จัดเก็บบางโปรเจ็กต์ จากนั้นเปิดไฟล์โซลูชันในแผ่นจดบันทึกและลดจำนวนคุณสมบัติ SccNumberOfProjects ตามจำนวนไดเรกทอรีว่างที่สร้างขึ้นและลบ SccProjectUniqueName #, SccProjectName #, SccLocalPath # และคุณสมบัติอื่น ๆ ที่มี # เดียวกัน
Muris

0

มีวิธีที่ง่ายกว่าซึ่งได้รับการทดสอบใน Visual Studio 2013 Update 1 และสามารถใช้ได้กับโครงการที่เชื่อมต่อ TFS:

  • เปิด Visual Studio แต่ให้ปิดโซลูชัน
  • Open Source Explorerและเปลี่ยนชื่อโฟลเดอร์ที่ต้องการ (โซลูชันจะปิดให้คุณหากคุณยังไม่ได้ปิดก่อน)
  • คลิกขวาที่โซลูชัน (จากSource Explorerเช่นกัน) และเลือกการเช็คอิน
  • เปิดโซลูชัน คุณจะได้รับแจ้งว่ามีโครงการใหม่เพิ่มเข้ามา ยอมรับเพื่อรับการเปลี่ยนแปลง
  • ลบโปรเจ็กต์ออกจากโซลูชันและเพิ่มอีกครั้งจากนั้นเช็คอิน
  • ตรวจสอบว่าการอ้างอิงภายในนั้นตกลง

0

วิธีที่ง่ายที่สุดคือไปที่คุณสมบัติของหน้าต่างเปลี่ยนชื่อของเนมสเปซเริ่มต้นจากนั้นเปลี่ยนชื่อเสร็จสิ้น


หน้าต่างที่คุณพูดถึงคืออะไร? คุณหมายถึงหน้าต่างคุณสมบัติของโครงการหรือไม่
Peter Mortensen

0
  1. เปลี่ยนชื่อโครงการนอก Visual Studio
  2. แก้ไขyour_project_name.slnด้วยเท็กซ์เอดิเตอร์และเปลี่ยนชื่อพา ธ เป็นพา ธ ใหม่

1
ดูเหมือนว่าจะคล้ายกับทางออกปัจจุบันและยากขึ้นเล็กน้อย
bowlturner

0

ฉันทำต่อไปนี้:

<สร้างการสำรองข้อมูลของโฟลเดอร์ทั้งหมด>

  1. เปลี่ยนชื่อโครงการจากภายใน Visual Studio 2013 (ไม่บังคับ / ไม่จำเป็น)

  2. ส่งออกโครงการเป็นเทมเพลต

  3. ปิดโซลูชัน

  4. เปิดโซลูชันอีกครั้ง

  5. สร้างโครงการจากเทมเพลตที่บันทึกและใช้ชื่อที่คุณชอบ

  6. ลบออกจากตัวสำรวจโซลูชันของโครงการก่อนหน้า

ณ จุดนี้ฉันพยายามรวบรวมโซลูชันใหม่และต้องทำเช่นนั้นฉันต้องคัดลอกทรัพยากรและส่วนหัวไปยังโฟลเดอร์โครงการใหม่ด้วยตนเองจากโฟลเดอร์โครงการเก่า ทำเช่นนี้จนกว่าจะรวบรวมโดยไม่มีข้อผิดพลาด ตอนนี้โครงการใหม่นี้ได้บันทึก "ไฟล์ ".exe" ไปยังโฟลเดอร์ก่อนหน้า *

ดังนั้น ->

  1. ไปที่ Windows Explorer และคัดลอกไฟล์โซลูชันจากโฟลเดอร์โครงการเก่าไปยังโฟลเดอร์โครงการใหม่ด้วยตนเอง

  2. ปิดโซลูชันและเปิดโซลูชันจากภายในโครงการใหม่

  3. เปลี่ยนการกำหนดค่ากลับเป็น (x64) หากต้องการ

  4. ลบโฟลเดอร์ของโครงการด้วยชื่อเก่าจากโฟลเดอร์ของโซลูชัน

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