ฉันควรเพิ่มไฟล์. vcxproj.filter ไปยังตัวควบคุมแหล่งที่มาหรือไม่


169

ขณะประเมิน Visual Studio 2010 Beta 2 ฉันเห็นว่าในไดเรกทอรีที่แปลงไฟล์vcprojของฉันกลายเป็นไฟล์vcxproj นอกจากนี้ยังมีไฟล์vcxproj.filterข้างแต่ละโครงการซึ่งดูเหมือนจะมีคำอธิบายของโครงสร้างโฟลเดอร์ (\ Source Files, \ Header Files ฯลฯ )

คุณคิดว่าไฟล์ตัวกรองเหล่านี้ควรได้รับการเก็บไว้ต่อผู้ใช้หรือไม่หรือควรใช้ร่วมกันในกลุ่ม dev ทั้งหมดและตรวจสอบใน SCC หรือไม่

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

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

คำตอบ:


59

Visual Studio รุ่นก่อนหน้า (อย่างน้อยรุ่น 6.0 และ 2008) เก็บข้อมูลในไฟล์โครงการของตนเอง (.dsp และไฟล์. vcproj ตามลำดับ) ซึ่งแน่นอนว่าเป็นการดีที่จะเพิ่มลงใน SCC

ฉันไม่สามารถคิดด้วยเหตุผลใด ๆ ที่จะไม่รวมไฟล์. filter ใน SCC


ฉันอยู่กับคุณ ฉันตรวจสอบแล้วขอบคุณ!
jschroedl

111

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


3
สำหรับการสร้างใหม่โดยอัตโนมัติคุณจะสร้างไฟล์ใด ๆ ที่มีการเปลี่ยนแปลง (เช่นแหล่งที่มา) ดังนั้นตอนนี้ไม่มีอะไรเปลี่ยนแปลงยกเว้นว่าเรามีไฟล์อื่นที่จะจัดการ
gbjbaanb

3
กล่าวอีกนัยหนึ่งคุณจัดการทั้งสองไฟล์ราวกับว่าพวกเขาเป็นหนึ่ง ฉันไม่คิดว่าคนอื่นจะปฏิบัติต่อพวกเขาแยกกันเช่นกัน มันเป็นความคิดที่ดี แต่ความคิดเล็ก ๆ น้อย ๆ เกี่ยวกับการปฏิบัติในโลกแห่งความเป็นจริงนั้นต้องใช้เวลาอีกนาน (เช่นการวางรันไทม์ใน WinSxS)
gbjbaanb

9
ฉันปฏิบัติต่อพวกเขาแยกกัน เท่าที่ฉันกังวลอึน้อยที่ต้องได้รับการเก็บรักษาไว้เป็นส่วนหนึ่งของสถานะโครงการดีกว่าดังนั้นฉันคิดว่านี่เป็นการตัดสินใจที่ดี
rwallace

6
เราสามารถปิดการใช้งานตัวกรองเหล่านี้ได้หรือไม่ถ้าเราไม่ต้องการใช้แผนผังแบบนามธรรม / ตรรกะ แต่เพียงแค่เห็นระบบไฟล์ธรรมดา
Johan Boulé

4
@JohanBoule: ฉันเห็นด้วยอย่างยิ่ง! พวกเขาควรจะทิ้งฟิลเตอร์ใน IDE มีโครงสร้างแบบลอจิคัลทรีอยู่แล้วและเรียกว่า "ระบบแฟ้ม" ขณะนี้มีการทำสำเนาจำนวนมาก - แต่ละไฟล์จะต้องมีการเพิ่มในระบบไฟล์, สคริปต์การสร้าง (vcxproj), ตัวกรอง (vcxproj.filters), การควบคุมแหล่งที่มาและอาจเป็นที่อื่น มันเป็นการละเมิดที่มีค่า DRY โชคดีที่ดูเหมือนว่ากรองไฟล์ที่มีตัวเลือก คุณสามารถลบและใช้ปุ่ม "แสดงไฟล์ทั้งหมด" ใน IDE น่าเสียดายที่ไม่ใช่ค่าเริ่มต้น
Yakov Galka

5

ฉันเพิ่งพบว่าถ้าคุณใช้ Git คุณสามารถทำเครื่องหมายไฟล์. ตัวกรองเพื่อรับการรวมเข้าด้วยกันเพื่อให้ง่ายขึ้น เพียงเพิ่มบรรทัด:

*.vcxproj.filters merge=union

ไปที่ไฟล์. gitattributes ของคุณ

ดูที่การใช้. gitattributes เพื่อหลีกเลี่ยงการรวมความขัดแย้งสำหรับรายละเอียดเพิ่มเติม


ลิงก์ที่กล่าวถึงไม่ได้กล่าวถึงไฟล์. ตัวกรองนี้ควรมี "union" ที่ระบุไว้ในไฟล์ gitattributes
ollydbg23

2
แต่มันบอกว่าmerge=unionทำอะไร - ไม่มีสัญญาอะไรอีก ด้วยความรู้นั้นและความคิดที่กว้างมากว่า * .filter-files มีลักษณะอย่างไรจึงเป็นเรื่องง่ายที่จะเห็นว่าทำไมจึงmerge=unionเป็นความคิดที่ดีสำหรับไฟล์เหล่านั้น
Peter Schneider

1

มันไม่ควรจะเพิ่มในกรณีที่คุณใช้CMake(หรือสร้างเครื่องมือที่คล้ายกัน) เพื่อสร้างไฟล์เช่น*.sln, *.vcxproj, *.vcxproj.filtersเป็นต้นเพราะไฟล์นี้อาจมีเส้นทางแบบเต็มไปโครงการโฟลเดอร์และอื่น ๆ ของคุณเพียงโฟลเดอร์เฉพาะของคอมพิวเตอร์ของคุณ

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