โซลูชันปัจจุบันของฉันสำหรับการเปลี่ยนชื่อโฟลเดอร์โครงการคือ:
- ลบโปรเจ็กต์ออกจากโซลูชัน
- เปลี่ยนชื่อโฟลเดอร์ภายนอก Visual Studio
- เพิ่มโครงการอีกครั้งลงในโซลูชัน
มีวิธีที่ดีกว่า?
โซลูชันปัจจุบันของฉันสำหรับการเปลี่ยนชื่อโฟลเดอร์โครงการคือ:
มีวิธีที่ดีกว่า?
คำตอบ:
ผู้ใช้ TFS:หากคุณใช้การควบคุมแหล่งข้อมูลที่ต้องการให้คุณเตือนก่อนเปลี่ยนชื่อไฟล์ / โฟลเดอร์ของคุณให้ดูที่คำตอบนี้ซึ่งครอบคลุมขั้นตอนเพิ่มเติมที่จำเป็น
การเปลี่ยนชื่อของโครงการโฟลเดอร์ , ไฟล์ ( .*proj
) และชื่อที่ใช้แสดงใน Visual Studio:
.sln
ไฟล์โดยตรงในโปรแกรมแก้ไขอื่นเช่นNotepad ++และอัปเดตพา ธ ที่นั่นแทน (คุณอาจต้องตรวจสอบโซลูชันก่อนใน TFS เป็นต้น)หมายเหตุ:โซลูชันที่แนะนำอื่น ๆ ที่เกี่ยวข้องกับการนำออกแล้วเพิ่มโครงการเข้าไปในโซลูชันอีกครั้งจะเป็นการหยุดการอ้างอิงโครงการ
หากคุณทำตามขั้นตอนเหล่านี้คุณอาจพิจารณาเปลี่ยนชื่อต่อไปนี้เพื่อให้ตรงกับ:
ลองพิจารณาแก้ไขค่าของแอ็ตทริบิวต์ชุดประกอบต่อไปนี้:
AssemblyProductAttribute
AssemblyDescriptionAttribute
AssemblyTitleAttribute
มีวิธีการอื่นในการทำเช่นนี้โดยใช้ไฟล์ * .sol, * csproj
มันจะเป็นเช่นนี้ (เทียบกับไฟล์ * .sol):
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Shani.Commands.Impl", "Shani.Commands.Impl\Shani.Commands.Impl.csproj", "{747CFA4B-FC83-419A-858E-5E2DE2B948EE}"
และเพียงแค่เปลี่ยนส่วนแรกเป็นไดเร็คทอรี่ใหม่เช่น:
Impl\Shani.Commands.Impl\Shani.Commands.Impl.csproj
แน่นอนอย่าลืมย้ายโครงการทั้งหมดไปยังไดเรกทอรีนั้น
ตรงไปตรงมาใน Visual Studio 2015 (อาจใช้งานได้ในรุ่นที่เก่ากว่า)
.sln
ไฟล์ในNotepadและเปลี่ยนเส้นทางไปยัง csproj คือ, →fu\bar.csproj
bar\bar.csproj
ฉันต่อสู้กับสิ่งนี้ได้ไหม น่าเสียดายที่ไม่มีโซลูชันคลิกเดียวใน Visual Studio แต่ถ้าคุณกำลังใช้งานVisual Studio 2012และโครงการของคุณอยู่ภายใต้การควบคุมของแหล่งข้อมูลกับTeam Foundation Server ต่อไปนี้เป็นวิธีที่ฉันได้ทำงานในขณะที่รักษาประวัติแหล่งที่มา:
(ให้แน่ใจว่าคุณอ่านความคิดเห็นของ @ mjv ด้านล่างในขณะที่เขาบันทึกว่าคุณสามารถข้ามขั้นตอนที่ 5-10)
คู่มือข้างต้นทำงานให้ฉัน หากวิธีนี้ใช้ไม่ได้ผลให้ลองและลบโซลูชันภายในเครื่องของคุณออกอย่างสมบูรณ์แล้วลบการแมปโฟลเดอร์ในพื้นที่ทำงานของคุณ รีสตาร์ท Visual Studio ในกรณีที่ ตรวจสอบให้แน่ใจว่าคุณลบโซลูชันทั้งหมดออกจากคอมพิวเตอร์ของคุณ ตอนนี้อ่านวิธีแก้ปัญหาการแมปไปยังพื้นที่ทำงานของคุณและรับรุ่นล่าสุด ลองทำตามขั้นตอนด้านบน เช่นเดียวกันหากมีสิ่งผิดปกติเกิดขึ้นขณะทำตามขั้นตอนด้านบน เพียงลบโซลูชันของคุณในเครื่องและรับแหล่งล่าสุดและคุณจะมีกระดานชนวนสะอาด
หากคุณยังคงมีปัญหาตรวจสอบให้แน่ใจว่าคุณไม่ได้เปลี่ยนแปลงอะไรด้วยตนเองในไฟล์โซลูชันหรือลองใช้ 'เคล็ดลับ' อื่น ๆ ก่อนลองทำตามขั้นตอนด้านบน หากคุณมีการเปลี่ยนแปลงบางอย่างและตรวจสอบในคุณอาจต้องการพิจารณาย้อนกลับไปยังจุดก่อนที่คุณจะเริ่มยุ่งกับการเปลี่ยนชื่อโครงการ
แน่นอนคุณต้องเปลี่ยนชื่อโครงการด้วยตนเองใน Solution Explorer คุณสามารถทำได้ก่อนขั้นตอนข้างต้น แต่ในกรณีนั้นตรวจสอบให้แน่ใจว่าคุณเช็คอินการเปลี่ยนแปลงนั้นก่อนที่จะใช้ขั้นตอนข้างต้น คุณสามารถทำได้หลังจากนั้น แต่ให้แน่ใจว่าคุณทำตามขั้นตอนทั้งหมดข้างต้นก่อนและตรวจสอบการเปลี่ยนแปลงของคุณก่อนที่จะพยายามเปลี่ยนชื่อโครงการใน Solution Explorer ฉันไม่แนะนำให้พยายามผสมขั้นตอนข้างต้นกับการเปลี่ยนชื่อโครงการใน Solution Explorer มันอาจใช้งานได้ แต่ฉันจะแนะนำและทำมันใน 2 เซ็ตการแก้ไขแยกกัน
VS2012
! ทราบว่าคุณอาจหลีกเลี่ยงขั้นตอน 5-10 (คือไม่ต้องนำกลับมาเปลี่ยนชื่อโฟลเดอร์ภายในควบคุมแหล่งที่มา) ถ้าแทนคุณปิดการแก้ปัญหาและแล้วเปลี่ยนชื่อโฟลเดอร์ภายในมากกว่าVS' Source Control Explorer
Windows Explorer
Folder already exists
ทำให้เกิดข้อผิดพลาด: ดังนั้นฉันต้องเปลี่ยนชื่อโฟลเดอร์อีกครั้งWE
จากนั้นเปลี่ยนเป็นSCE
จากนั้นคัดลอกไฟล์ลงในโฟลเดอร์นั้นก่อนที่มันจะทำงาน ดังนั้นทำตามความคิดเห็นจาก mjv ด้านบน ฉันยังไม่ได้คิดเกี่ยวกับการเปลี่ยนชื่อไฟล์โครงการจริง (ไม่ใช่เฉพาะใน VS) ซึ่งฉันทำในภายหลังทำให้ฉันทำขั้นตอนเหล่านี้ซ้ำอีกครั้ง
ปัจจุบันไม่มี จริง ๆ แล้วคุณสามารถคลิกโหนดโปรเจ็กต์ที่เสียหายและในบานหน้าต่างคุณสมบัติมองหา 'เส้นทาง' ของคุณสมบัติคลิกที่ไอคอนเบราส์เล็ก ๆ แล้วเลือกพา ธ ใหม่
Voilà :)
วิธีที่ง่ายกว่าคือ:
มีสี่ขั้นตอนที่จำเป็น แต่แนะนำเจ็ดขั้นตอน ในตอนท้ายของวันแม้ว่าโครงการจะถูกเปลี่ยนชื่ออย่างสมบูรณ์ ในทางเทคนิคชื่อโฟลเดอร์สำหรับโครงการไม่จำเป็นต้องตรงกับโครงการดังนั้นแม้แต่ขั้นตอนนั้นก็เป็นทางเลือก แต่อาจสร้างความสับสนหากไม่ตรงกัน ชื่อเดียวกันสำหรับแอสเซมบลีและเนมสเปซ
ในคำตอบของ andersjanmyrมันง่ายกว่าที่จะเปลี่ยนชื่อโครงการก่อน
หลังจากดำเนินการตามขั้นตอนเหล่านี้แล้วคุณอาจต้องการเปลี่ยนชื่อการอ้างอิงอื่นเป็นชื่อโครงการเก่าของคุณ
ในคุณสมบัติโครงการอัพเดตชื่อชุดประกอบและชื่อเริ่มต้น
สิ่งนี้จะอัพเดตสิ่งต่อไปนี้ในไฟล์โครงการ ...
<RootNamespace>SomeProjectName</RootNamespace>
<AssemblyName>SomeProjectName</AssemblyName>
... และจะกำจัดข้อผิดพลาด "Namespace ไม่สอดคล้องกับตำแหน่งไฟล์ควรเป็น: 'SomeProjectName'"
เปลี่ยนชื่อรูทเนมสเปซของคุณ (ถ้าคุณมี ReSharper คลิกขวาที่เนมสเปซและไป Refactor -> เปลี่ยนชื่อ)
เปลี่ยนที่เกิดขึ้นทั้งหมดของชื่อโครงการเก่าของคุณในAssemblyInfo.cs
สำหรับ Visual Studio 2017 คุณสามารถใช้ส่วนขยาย Visual Studio ของฉัน:
มันจะเปลี่ยนชื่อโครงการใน:
[assembly: InternalsVisibleTo("MyTests")]
ดังนั้นผมจึงมีโครงการทดสอบและผมดังนั้นผมจึงมี เมื่อฉันเปลี่ยนชื่อMyTests
มันไม่ได้เปลี่ยนชื่อการอ้างอิงนั้น อีกครั้งฉันไม่คิดว่าสิ่งนี้จะอยู่ภายใต้ขอบเขตของคุณและง่ายต่อการแก้ไขด้วยตนเอง
ฉันต้องทำเอง (ใช้ Visual Studio 2010) ตามที่บางคนตอบคำถามแล้วขั้นตอนที่ง่ายที่สุดน่าจะเป็น:
สำหรับผู้ที่ใช้ Visual Studio + Git และต้องการเก็บประวัติไฟล์ (ทำงานเปลี่ยนชื่อทั้งโครงการและ / หรือโซลูชั่น):
ปิด Visual Studio
ในไฟล์. gitignore ให้ทำซ้ำเส้นทางละเว้นทั้งหมดของโครงการที่คุณต้องการเปลี่ยนชื่อด้วยรุ่นที่เปลี่ยนชื่อของเส้นทางเหล่านั้น
ใช้คำสั่ง Git move ดังนี้:
git mv <old_folder_name> <new_folder_name>
ดูเอกสารประกอบสำหรับตัวเลือกเพิ่มเติม: https://git-scm.com/docs/git-mv
ในไฟล์. sln ของคุณ: ค้นหาบรรทัดที่กำหนดโครงการของคุณและเปลี่ยนชื่อโฟลเดอร์ในพา ธ บรรทัดควรมีลักษณะดังนี้:
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "<Project name>", "<path-to-project>\<project>.csproj"
เปิด Visual Studio และคลิกขวาที่โครงการ→ เปลี่ยนชื่อ
หลังจากนั้นให้เปลี่ยนชื่อเนมสเปซ
ฉันอ่านว่าReSharperมีตัวเลือกบางอย่างสำหรับเรื่องนี้ แต่การค้นหา / แทนที่ง่าย ๆ ก็ทำงานให้ฉัน
ลบเส้นทาง. gitignore เก่า
ดูรายการที่ 3 ในบทความที่เชื่อมโยง
มันใช้งานได้สำหรับฉัน
สิ่งที่ทำงานกับฉันใน Visual Studio 2017:
มันพูดอะไรบางอย่างเช่น " เพิ่มโครงการอีกครั้ง " ฉันสร้างใหม่ทุกอย่างและทุกอย่างก็ดีไป
Dependencies
>> Add reference
>> เลือกโครงการใหม่ของคุณ )
ฉันต้องทำหลายครั้ง มันมีประโยชน์จริง ๆ ที่จะสามารถจัดโครงงานโครงการที่มีอยู่ใหม่ แต่สามารถเปลี่ยนชื่อข้อความในเนมสเปซไฟล์และโฟลเดอร์ (รวมถึงชื่อไฟล์ / ไดเรกทอรี)
การใช้การค้นหาและแทนที่แบบเรียกซ้ำที่เริ่มต้นที่โฟลเดอร์รูทหมายความว่าการเปลี่ยนชื่อจะไม่ทำลายลิงก์ไปยังโปรเจ็กต์ในไฟล์โซลูชันและการอ้างอิงโปรเจ็กต์
ด้วยเหตุนี้ฉันได้สร้างโครงการเพื่อทำสิ่งนี้ แอปพลิเคชันยังพยายามละเว้นโฟลเดอร์ควบคุมเวอร์ชันเช่น. git, .svn และไฟล์การตั้งค่า. vs ข้อมูลเพิ่มเติมอยู่ใน README
โซลูชันที่พิสูจน์แล้วสำหรับส่วนขยาย Visual Studio สำหรับเครื่องมือข้อมูลสำหรับระบบธุรกิจอัจฉริยะ (SSDT-BI 2013):
มันได้รับการทดสอบ 100% และทำงานได้อย่างไม่มีที่ติในกรณีของฉัน
หมายเหตุ: ฉันไม่สามารถยืนยันได้ว่ามันทำงานภายใต้แม่แบบโครงการที่แตกต่างกันและรุ่น Visual Studio อื่น ๆ เช่นเคยสำรองข้อมูลทุกอย่างไว้ล่วงหน้า
ฉันได้เขียนเครื่องมือขนาดเล็กที่ทำตามขั้นตอนเหล่านี้โดยอัตโนมัติ นอกจากนี้ยังรองรับการโค่นล้มในตอนนี้
ข้อมูลเกี่ยวกับรุ่นปัจจุบันสามารถพบได้ที่Visual Studio โครงการเปลี่ยนชื่อ Infos
รุ่นล่าสุดในขณะนี้สามารถดาวน์โหลดได้จากVisual Studio โครงการเปลี่ยนชื่อหน้าดาวน์โหลด
ข้อเสนอแนะชื่นชมมาก
ฉันมักจะมีปัญหาเดียวกันกับการเปลี่ยนชื่อโครงการใน 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
หมายเหตุ : การแก้ไขนี้มีไว้สำหรับ Visual Studio 2008 แต่ควรทำงานได้ที่นี่
.sln
ไฟล์ที่อยู่ในโฟลเดอร์พาเรนต์.sln
ไฟล์หรือไม่ Yesคลิก.sln
ไฟล์มีชื่อเดียวกับโฟลเดอร์โดยไม่จำเป็น แต่มีความสอดคล้องกัน)เสร็จสิ้น
เมื่อใช้ TFS จริง ๆ แล้วขั้นตอนที่ 2 คือการเปลี่ยนชื่อโฟลเดอร์ในตัวควบคุมแหล่งที่มาแล้วรับข้อมูลล่าสุดก่อนที่จะเปิดโซลูชันอีกครั้ง
เมื่อเร็ว ๆ นี้เราได้อัปโหลดส่วนขยายของ Visual Studio ฟรีซึ่งทำสิ่งนี้ให้คุณ
ลองดูที่ Visual Studio Gallery: ดาวน์โหลดคลังภาพ
ฉันทำตามวิธีของฉัน
เปลี่ยนชื่อโครงการในโซลูชันและโฟลเดอร์โครงการ
ลบโครงการออกจากโซลูชัน
เพิ่มโครงการที่มีอยู่ให้กับโซลูชัน (โครงการที่ถูกเปลี่ยนชื่อของคุณ)
มันใช้งานได้สำหรับฉัน TFS จะติดตามโครงการใหม่ด้วย
เปิด. sln ในเท็กซ์เอดิเตอร์และในบรรทัดต่อไปนี้เปลี่ยน <FolderName> เป็นชื่อโฟลเดอร์ใหม่ของคุณโครงการ ("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Ricky", "\ .csproj", " {021CC6B0-8CFB-4194-A103-C19AF869D965}"
ไปที่ไฟล์. sln คลิกขวาเปิดด้วย Notepad ++ (หรือตัวแก้ไขใด ๆ Notepad ++ เป็นวิธีที่เร็วที่สุด) ค้นหาพา ธ เปลี่ยน
หลังจากเปลี่ยนชื่อโฟลเดอร์แล้วให้เปิดไฟล์. sln ในNotepadและเปลี่ยนพา ธ เป็นพา ธ ใหม่
ปัญหาที่คล้ายกันเกิดขึ้นเมื่อต้องสร้างโครงการใหม่และคุณต้องการชื่อโฟลเดอร์โครงการที่แตกต่างจากชื่อโครงการ
เมื่อคุณสร้างโครงการใหม่มันจะถูกเก็บไว้ที่
./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
ข้อเสียของวิธีการนี้คือคุณต้องปรับเนมสเปซเริ่มต้นและชื่อของเอาต์พุตไบนารีเช่นกันและคุณต้องอัปเดตเนมสเปซในไฟล์ทั้งหมดที่รวมอยู่ในเทมเพลตโครงการ
ฉันใช้ Visual Studio 2013 และTFS 2013
ฉันทำแบบนี้:
มีวิธีที่ง่ายกว่าซึ่งได้รับการทดสอบใน Visual Studio 2013 Update 1 และสามารถใช้ได้กับโครงการที่เชื่อมต่อ TFS:
วิธีที่ง่ายที่สุดคือไปที่คุณสมบัติของหน้าต่างเปลี่ยนชื่อของเนมสเปซเริ่มต้นจากนั้นเปลี่ยนชื่อเสร็จสิ้น
ฉันทำต่อไปนี้:
<สร้างการสำรองข้อมูลของโฟลเดอร์ทั้งหมด>
เปลี่ยนชื่อโครงการจากภายใน Visual Studio 2013 (ไม่บังคับ / ไม่จำเป็น)
ส่งออกโครงการเป็นเทมเพลต
ปิดโซลูชัน
เปิดโซลูชันอีกครั้ง
สร้างโครงการจากเทมเพลตที่บันทึกและใช้ชื่อที่คุณชอบ
ลบออกจากตัวสำรวจโซลูชันของโครงการก่อนหน้า
ณ จุดนี้ฉันพยายามรวบรวมโซลูชันใหม่และต้องทำเช่นนั้นฉันต้องคัดลอกทรัพยากรและส่วนหัวไปยังโฟลเดอร์โครงการใหม่ด้วยตนเองจากโฟลเดอร์โครงการเก่า ทำเช่นนี้จนกว่าจะรวบรวมโดยไม่มีข้อผิดพลาด ตอนนี้โครงการใหม่นี้ได้บันทึก "ไฟล์ ".exe" ไปยังโฟลเดอร์ก่อนหน้า *
ดังนั้น ->
ไปที่ Windows Explorer และคัดลอกไฟล์โซลูชันจากโฟลเดอร์โครงการเก่าไปยังโฟลเดอร์โครงการใหม่ด้วยตนเอง
ปิดโซลูชันและเปิดโซลูชันจากภายในโครงการใหม่
เปลี่ยนการกำหนดค่ากลับเป็น (x64) หากต้องการ
ลบโฟลเดอร์ของโครงการด้วยชื่อเก่าจากโฟลเดอร์ของโซลูชัน