ทำไมตัวเลือก“ Set as Startup” จึงถูกเก็บไว้ในไฟล์ suo ไม่ใช่ไฟล์ sln


175

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

คำตอบ:


46

ทำไมมันควรเป็นการตั้งค่าที่ไม่ใช่ผู้ใช้เฉพาะ?

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

ฉันคิดว่า MS ได้เลือกที่ถูกต้องสำหรับอันนี้ โครงการที่ฉันต้องการเริ่มต้นอยู่ไกลจากโครงการที่นักพัฒนารายอื่นต้องการเริ่มต้น


133
บ่อยครั้งที่คุณจะมีโครงการที่น่าจะเป็นโครงการเริ่มต้นที่คนส่วนใหญ่ต้องการสำหรับการดีบัก (เช่นเว็บไซต์) และคุณไม่ต้องการให้ไลบรารีคลาสเป็นโครงการเริ่มต้น ฉันไม่เห็นสาเหตุที่ MS ไม่สามารถให้กลไกที่เหมาะสม (ไม่ใช่สิ่งที่ดูเหมือนแฮ็กเช่นวางค่าเริ่มต้นที่ด้านบนในไฟล์. sln) สำหรับการตั้งค่าโครงการเริ่มต้นเริ่มต้นทั่วโลกแล้วอนุญาต suo เพื่อแทนที่หากต้องการ
Jez

27
นั่นคือในลักษณะของการพูด ... ย้ายโครงการที่คุณต้องการกำหนดให้เป็นโครงการเริ่มต้นเริ่มต้นเป็นโครงการแรกในไฟล์ sln ลบไฟล์ suo ของคุณอีกครั้งเปิดทางออกและ woila โปรเจ็กต์แรกควรเป็นการเริ่มต้น อาจมีปัจจัยอื่น ๆ ที่สนับสนุนสิ่งนี้ แต่ฉันพบว่าเมื่อฉันสังเกตเห็นว่าโครงการหนึ่งโดยเฉพาะเริ่มต้นเมื่อฉันตรวจสอบโครงการที่สะอาดจากการควบคุมแหล่งที่มา
misteraidan

2
นี่เป็นปัญหาเมื่อใช้เซิร์ฟเวอร์บิลด์เพราะมันจะต้องมีการตรวจสอบ suo ในการควบคุมเวอร์ชันเพื่อตั้งค่าโครงการเริ่มต้นที่ถูกต้องและการตรวจสอบ suo ในการควบคุมเวอร์ชันเป็นความคิดที่ไม่ดี
markshancock

2
@markshancock: ทำไมบิลด์เซิร์ฟเวอร์จะดูแลเกี่ยวกับโปรเจ็กต์เริ่มต้น ฉันไม่เคยเห็นว่าเป็นปัญหา
Jon Skeet

18
ฉันขอโทษจอน แต่ฉันจะให้ -1 กับคุณที่นี่ ฉันเป็นผู้ศรัทธาที่ devs ควรมีความสามารถในการดาวน์โหลดรหัสแล้วกด F5 โดยคาดว่าจะมีการตั้งค่าการพัฒนาตามปกติเพื่อสร้างและเริ่มต้น แน่นอนคุณควรมีความสามารถในการปรับแต่ง startups ของคุณสำหรับสถานการณ์ส่วนบุคคล แต่เราควรจะสามารถตั้งค่าเริ่มต้นสำหรับผู้ใช้ส่วนใหญ่ตามที่ระบุไว้ข้างต้น คำตอบของโอลิเวอร์ดูเหมือนจะเป็นไปได้ที่จะทำเช่นนั้นแม้ว่ามันจะดูเหมือนว่าหลายโครงการเริ่มต้นจะยังคงเป็นไปไม่ได้ที่จะตรวจสอบการควบคุมแหล่งที่มาซึ่งเป็นเรื่องน่าละอาย
สตีเฟ่นโฮลต์

376

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

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

  1. ปิด Visual Studio ของคุณและเปิดไฟล์. sln ในโปรแกรมแก้ไขข้อความที่คุณโปรดปราน เริ่มต้นในบรรทัดที่ 4 คุณจะเห็นโครงการทั้งหมดของคุณห่อหุ้มในProject- EndProjectบรรทัด

  2. ตัดและวางโครงการเริ่มต้นเริ่มต้นที่ต้องการไปยังตำแหน่งบนสุด

  3. ลบไฟล์. suo ของคุณ

  4. เปิดโซลูชันของคุณใน Visual Studio Ta daa!

มีรางวัลพิเศษไหมถ้าคุณรู้บางอย่างที่จอนไม่รู้ ;-)


1
Finaly! สิ่งนี้ได้ดักฟังฉันมาเป็นเวลานาน แต่ก็ไม่มีอีกแล้ว! Tkanks :)
mdonatas

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

25
ว้าว! คุณเลิก Jon! :))
Andrei Rînea

3
จะเกิดอะไรขึ้นถ้ามีโครงการเริ่มต้นสองโครงการ - ฉันจะเริ่มโครงการทั้งสองเป็นค่าเริ่มต้นได้อย่างไร
Amy B

6
@Oliver: คลิกขวาที่โซลูชัน -> กำหนดโครงการเริ่มต้น ... -> โครงการเริ่มต้นหลายโครงการ คลิกเดียวเริ่มต้นหลาย ๆ
Anton

46

ในกรณีส่วนใหญ่ก็ไม่ได้ทำให้ความรู้สึกที่มีค่าเริ่มต้นเกี่ยวกับเรื่องนี้

มันจะดีกว่ามากที่จะรองรับโครงการเริ่มต้นเริ่มต้นและเก็บไว้ในไฟล์. sln แต่สิ่งที่นักพัฒนาสามารถแทนที่ได้ในไฟล์. suo หากไม่พบการตั้งค่าเริ่มต้นในไฟล์. suo จะใช้โครงการเริ่มต้นเริ่มต้นใน. sln

จริงนี้ได้รับการแนะนำใน UserVoice


UserVoice ที่เชื่อมโยงนั้น "ปิดการลงคะแนน" แต่ไม่มีความคิดเห็นว่าทำไม
yzorg

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

3

ฉันเขียนอรรถประโยชน์บรรทัดคำสั่งเล็กน้อยสำหรับ Windows ที่เรียกว่าslnStartupProjectตั้งค่าโครงการเริ่มต้นโดยอัตโนมัติ:

slnStartupProject slnFilename projectName

ฉันใช้มันเพื่อตั้งค่าโปรเจ็กต์เริ่มต้นหลังจากสร้างโซลูชันด้วยcmakeที่ตั้งALL_BUILDโปรเจคดัมมี่เป็นโครงการแรกในโซลูชันเสมอ

แหล่งที่มาอยู่บน GitHub ทางแยกและข้อเสนอแนะยินดีต้อนรับ


ขอบคุณสำหรับสิ่งนี้! ฉันเจอปัญหานี้กับ cmake และยูทิลิตี้ของคุณใช้งานได้ดีมาก!
sippa

1
ยินดีต้อนรับคุณ! มีความสุขมันช่วยได้เพราะมันบั๊กฉันมาหลายปีก่อนที่ฉันจะตัดสินใจว่าจะแก้ไขให้ดี ไม่เข้าใจจริงๆว่าทำไมผู้คนถึงมีการต่อสู้ในเชิงปรัชญาเกี่ยวกับเรื่องนี้ในขณะที่มันมีประโยชน์อย่างชัดเจนในกรณีส่วนใหญ่
michaK

คุณ .. รอ ... อะไรนะ - คุณสร้างไฟล์. sln ด้วยตนเองหรือไม่ ... นี่คือคาถาอะไร?
BrainSlugs83

3

หากคุณกำลังใช้ GIT คุณสามารถส่งไฟล์ SUO เริ่มต้นแล้วทำเครื่องหมายว่าไม่เปลี่ยนแปลงโดยใช้

git update-index --assume-unchanged YourSolution.suo

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

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