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


841

โซลูชัน Visual Studio ประกอบด้วยไฟล์ผู้ใช้ที่ซ่อนสองประเภท หนึ่งคือ.suoไฟล์โซลูชันซึ่งเป็นไฟล์ไบนารี อื่น ๆ เป็น.userไฟล์โครงการซึ่งเป็นไฟล์ข้อความ ไฟล์เหล่านี้มีข้อมูลอะไรบ้าง

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


9
ไฟล์. suo จะถูกสร้างขึ้นใหม่โดยอัตโนมัติ วิธีที่ยอดเยี่ยมในการ 'รีเฟรช' การตั้งค่าของคุณเป็นค่าเริ่มต้นหากสิ่งต่างๆขาด
— CodingBarfield

3
แนวทางปฏิบัติที่ดีที่สุดสำหรับโครงการโค่นล้มและ Visual Studioเป็นคำถามทั่วไปเกี่ยวกับหัวข้อที่แน่นอนนี้ นอกจากนี้ยังมีคำตอบที่ได้รับการยอมรับของมันมีการเชื่อมโยงไป MSDN เอกสารอย่างเป็นทางการซึ่งจะอธิบายในรายละเอียดไฟล์ / ไดเรกทอรีของการแก้ปัญหา VS / โครงการควรมีการเพิ่มระบบการควบคุมแหล่งที่มาและที่ส่วนควรละเลย
— Attila Csipak

3
สำหรับ *. suo โปรดดูที่นี่: msdn.microsoft.com/en-us/library/bb165909.aspx
— smwikipedia

คำตอบ:


673

ไฟล์เหล่านี้มีการกำหนดค่าตามความชอบของผู้ใช้โดยทั่วไปสำหรับเครื่องของคุณดังนั้นจึงไม่ควรใส่ไว้ใน SCM นอกจากนี้ VS จะเปลี่ยนแปลงเกือบทุกครั้งที่คุณเรียกใช้งานดังนั้น SCM จะถูกทำเครื่องหมายว่า 'เปลี่ยนแปลง' เสมอ ฉันไม่ได้รวมอยู่ด้วยฉันอยู่ในโครงการที่ใช้ VS เป็นเวลา 2 ปีและไม่มีปัญหาในการทำเช่นนั้น สิ่งที่น่ารำคาญเล็กน้อยเพียงอย่างเดียวคือพารามิเตอร์การดีบัก (เส้นทางการดำเนินการเป้าหมายการปรับใช้ ฯลฯ ) ถูกจัดเก็บไว้ในไฟล์ใดไฟล์หนึ่ง (ไม่ทราบว่ามี) ดังนั้นหากคุณมีมาตรฐานสำหรับพวกเขาคุณจะไม่สามารถ ' เผยแพร่ 'ผ่าน SCM เพื่อให้นักพัฒนารายอื่นมีสภาพแวดล้อมการพัฒนาทั้งหมด' พร้อมใช้งาน '


22
ระวังไฟล์ suo เก็บข้อมูลว่าโครงการโหลด / ไม่โหลดภายในโซลูชัน
— Kugel

5
ฉันเชื่อว่ามันเก็บข้อมูลการแก้ปัญหาในไฟล์. user (อย่างน้อยสำหรับเครื่องมือข้อมูลเซิร์ฟเวอร์ SQL) นอกจากนี้เมื่อคุณเปลี่ยนการตั้งค่าในแท็บ Debug มันจะไม่คงอยู่ตลอดเวลาสำหรับผู้ใช้ทันที (การปิดโซลูชันดูเหมือนว่าจะทำงานน่ารำคาญเล็กน้อย ... หรือเปลี่ยนการตั้งค่าอื่นที่เก็บไว้ในไฟล์. sqlproj)
— jamiebarrow

87
คุณสามารถเปิดได้ทั้งไฟล์. user และไฟล์. csproj ในโปรแกรมแก้ไขข้อความ ฉันเพิ่งทดสอบการคัดลอกการตั้งค่าการดีบักที่เกี่ยวข้องจาก. user ลงใน. csproj จากนั้นลบไฟล์. user การดีบักทำงานต่อไปอย่างมีความสุขอ่านการตั้งค่าที่ถูกต้องจากตำแหน่งใหม่ในไฟล์. csproj สิ่งนี้ควรเป็นวิธีในการกำหนดการตั้งค่าการดีบักโดยไม่ยอมรับไฟล์. user ให้แน่ใจว่าคุณใส่ไว้ในการกำหนดค่าที่ถูกต้อง (debug, release, ฯลฯ ) ทำงานบนเครื่องของฉัน! =)
— Chris Nielsen

139

คุณไม่จำเป็นต้องเพิ่มสิ่งเหล่านี้ - พวกเขามีการตั้งค่าต่อผู้ใช้และนักพัฒนาอื่น ๆ จะไม่ต้องการสำเนาของคุณ


19
หากคุณทำงานด้วยตัวเองในหลาย ๆ เครื่องมันจะคุ้มค่าไหมถ้าจะเพิ่มเข้าไป
— thepocketwade

33
ฉันจะไม่ทำเพราะอาจแตกต่างกับระบบที่ไม่คาดคิด ตัวอย่างเช่นหากคุณทำงานกับ x64 ที่ทำงานและ x86 ที่บ้านคุณอาจสำลัก "c: \ program files (x86)" และ "c: \ program files" ฉันไม่รู้ แต่ฉันก็ไม่ยอมเสี่ยง
— Steve Cooper

2
แม้ว่าพวกเขาจะมีข้อมูลเฉพาะของผู้ใช้ แต่ข้อมูลของไฟล์ที่เพิ่มใหม่ผ่านตัวเลือก (รวมอยู่ในโครงการ) ยังอยู่ในไฟล์. csproj ฉันคิดว่าซึ่งต้องการให้ผู้ใช้รายอื่นเพิ่มทรัพยากรโครงการที่เพิ่มเข้ามาใหม่ด้วยตนเอง หากใครรู้วิธีแก้ปัญหาโปรดพูดถึงที่นี่
— zeppelin

69

คนอื่น ๆ อธิบายว่าทำไมการมีไฟล์*.suoและ*.userภายใต้การควบคุมของแหล่งข้อมูลไม่ใช่ความคิดที่ดี

ฉันอยากจะแนะนำให้คุณเพิ่มรูปแบบเหล่านี้ในsvn:ignoreคุณสมบัติด้วยเหตุผล 2 ประการ:

  1. ดังนั้นนักพัฒนาคนอื่นจะไม่จบลงด้วยการตั้งค่าของนักพัฒนาคนเดียว
  2. ดังนั้นเมื่อคุณดูสถานะหรือคอมมิทไฟล์ไฟล์เหล่านั้นจะไม่ถ่วงฐานรหัสและปิดบังไฟล์ใหม่ที่คุณต้องเพิ่ม

มีการsvn:ignoreตั้งค่าคุณสมบัติที่ไหนและอย่างไร
— Peter Mortensen

@PeterMortensen ดูคำถามนี้: stackoverflow.com/questions/86049/…
— JXG

แต่มีกรณี (ดูคำตอบนี้ ) สำหรับการเพิ่ม.userดังนั้นหนึ่งอาจเลือกไม่สนใจเท่านั้น.suo- หรืออย่างใดอย่างหนึ่งอาจละเว้น.userได้ดังนั้นจึงต้องตัดสินใจอย่างมีสติเพื่อเพิ่ม อย่าคิดอย่างนั้นจุดsvn:ignoreคือทำเครื่องหมายสิ่งที่ไม่จำเป็นต้องมีสติตัดสินใจ
— PJTraill

49

เราไม่ยอมรับไฟล์ไบนารี (* .suo) แต่เราส่งไฟล์. user ไฟล์. user มีตัวอย่างของตัวเลือกการเริ่มต้นสำหรับการดีบักโครงการ คุณสามารถค้นหาตัวเลือกเริ่มต้นในคุณสมบัติของโครงการในแท็บ "Debug" เราใช้ NUnit ในบางโครงการและกำหนดค่า nunit-gui.exe เป็นตัวเลือกเริ่มต้นสำหรับโครงการ หากไม่มีไฟล์. user สมาชิกในทีมแต่ละคนจะต้องกำหนดค่าแยกต่างหาก

หวังว่านี่จะช่วยได้


4
ฉันก็เริ่มที่จะคิดว่ามันควรจะเป็นเช่นนั้น - กำหนดไฟล์ผู้ใช้เพื่อให้นักพัฒนาในทีมใช้การตั้งค่าการดีบักแบบเดียวกัน หากพวกเขาเปลี่ยนมันในเครื่องของตัวเองก็ยังคงดีตราบใดที่วิธีมาตรฐานเป็นรุ่นในการควบคุมแหล่งที่มา
— jamiebarrow

1
คนอื่น ๆ ไม่แนะนำให้ทำเช่นนี้ แต่ฉันไม่แน่ใจว่าอันตรายนั้นจะเป็นอย่างไร อาจเป็นเพราะไฟล์ repo ที่มีการตั้งค่าที่แม่นยำน้อยกว่าจะทำให้สำเนาของผู้ใช้ (ดีกว่า) หายไป? (ทีมของเราใช้ Mercurial, BTW)
— Jon Coombs

2
Microsoft ไม่แนะนำให้เพิ่มไฟล์. user ในการควบคุมแหล่งที่มา
— DavidRR

1
คุณสามารถย้ายการตั้งค่าการดีบักไปยัง. csproj ดูความคิดเห็นนี้
— Timbo

26

เนื่องจากฉันพบคำถาม / คำตอบผ่าน Google ในปี 2011 ฉันคิดว่าฉันจะใช้เวลาสักครู่และเพิ่มลิงก์สำหรับไฟล์ * .SDF ที่สร้างโดย Visual Studio 2010 ในรายการไฟล์ที่อาจไม่ควรเพิ่มในการควบคุมเวอร์ชัน ( IDE จะสร้างใหม่อีกครั้ง) เนื่องจากฉันไม่แน่ใจว่าไฟล์ * .sdf อาจมีการใช้อย่างถูกกฎหมายที่อื่นฉันจึงเพิกเฉยเฉพาะ [projectname] .sdf ไฟล์จาก SVN

เหตุใดตัวช่วยสร้างการแปลง Visual Studio 2010 จึงสร้างไฟล์ฐานข้อมูล SDF ขนาดใหญ่


2
ไฟล์ SDF อาจเป็นฐานข้อมูล SQL Server Compact Editionฐานข้อมูล
— Carl G

23

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

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

ไฟล์. user มีตัวเลือกผู้ใช้สำหรับโครงการ (ในขณะที่ SUO ใช้สำหรับการแก้ปัญหา) และขยายชื่อไฟล์โครงการ (เช่น Anything.csproj.user มีการตั้งค่าผู้ใช้สำหรับโครงการ Anything.csproj)


20

นี่เป็นความเห็นของ Microsoft ในเรื่องนี้:

การเพิ่ม (และแก้ไข) ไฟล์. suo ไปยังแหล่งควบคุม

ฉันไม่รู้ว่าเพราะเหตุใดโครงการของคุณจึงจัดเก็บ DebuggingWorkingDirectory ในไฟล์ suo หากเป็นการตั้งค่าเฉพาะของผู้ใช้คุณควรพิจารณาเก็บไว้ในชื่อไฟล์ * .proj.user หากการตั้งค่านั้นสามารถใช้ร่วมกันระหว่างผู้ใช้ทั้งหมดที่ทำงานในโครงการคุณควรพิจารณาจัดเก็บไว้ในไฟล์โครงการเอง

อย่าคิดว่าจะเพิ่มไฟล์ suo ไปยังแหล่งควบคุม! ไฟล์ SUO (ตัวเลือกผู้ใช้ soluton) มีไว้เพื่อให้มีการตั้งค่าเฉพาะของผู้ใช้และไม่ควรใช้ร่วมกันระหว่างผู้ใช้ที่ทำงานในโซลูชันเดียวกัน หากคุณต้องการเพิ่มไฟล์ suo ในฐานข้อมูล scc ฉันไม่ทราบว่ามีสิ่งอื่นใดใน IDE ที่คุณจะแตก แต่จากจุดควบคุมแหล่งที่มาของมุมมองคุณจะหยุดการรวมเว็บโครงการ scc ใช้ปลั๊กอิน Lan vs Internet โดยผู้ใช้ที่แตกต่างกันสำหรับการเข้าถึง VSS และคุณอาจทำให้ scc แตกอย่างสมบูรณ์ (เส้นทางฐานข้อมูล VSS ที่เก็บไว้ในไฟล์ suo ที่อาจใช้ได้สำหรับคุณอาจไม่ถูกต้องสำหรับผู้ใช้รายอื่น)

Alin Constantin (MSFT)


นอกจากนี้จาก MSDN: โซลูชั่นที่ใช้ตัวเลือก (.Suo) ไฟล์ ประโยคแรกทำให้เจตนาของ Microsoft ชัดเจน: "ไฟล์ตัวเลือกผู้ใช้โซลูชัน (.suo) มีตัวเลือกโซลูชันต่อผู้ใช้ไฟล์นี้ไม่ควรถูกตรวจสอบในการควบคุมซอร์สโค้ด"
— DavidRR

19

ตามค่าเริ่มต้น Visual SourceSafe ของ Microsoft ไม่รวมไฟล์เหล่านี้ในตัวควบคุมแหล่งที่มาเนื่องจากเป็นไฟล์การตั้งค่าเฉพาะผู้ใช้ ฉันจะติดตามรุ่นนั้นถ้าคุณใช้ SVN เป็นตัวควบคุมแหล่งที่มา


12

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


ฉันมีไฟล์. sou เหลืออยู่และมันก็ทำให้เกิดปัญหาในการรีโหลดแพ็กเกจ การลบไฟล์. so แก้ไขปัญหา ขอบคุณ.
— mercedes

11

บนเว็บไซต์ MSDNระบุไว้อย่างชัดเจนว่า

ไฟล์ตัวเลือกผู้ใช้โซลูชัน (.suo) มีตัวเลือกโซลูชันต่อผู้ใช้ ไฟล์นี้ไม่ควรได้รับการตรวจสอบในการควบคุมแหล่งรหัส

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


9

ฉันจะไม่ อะไรก็ตามที่สามารถเปลี่ยนแปลงต่อ "ผู้ใช้" มักจะไม่ดีในการควบคุมแหล่งที่มา ไดเรกทอรี. suo, .user, obj / bin


8

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


7

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

ไฟล์. suo เป็นไฟล์ที่เกี่ยวข้องกับ sln และประกอบด้วย "ตัวเลือกผู้ใช้โซลูชัน" (โครงการเริ่มต้นตำแหน่งหน้าต่าง (ตำแหน่งที่เชื่อมต่อและตำแหน่งที่ลอยอยู่) ฯลฯ )

มันเป็นไฟล์ไบนารีและฉันไม่รู้ว่ามันมีบางสิ่งที่ "เกี่ยวข้องกับผู้ใช้" หรือไม่

ใน บริษัท ของเราเราไม่ใช้ไฟล์เหล่านั้นภายใต้การควบคุมแหล่งที่มา


7

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

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


5

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



4

การใช้ Rational ClearCaseคำตอบคือไม่ ควรลงทะเบียน. sln &. * proj เท่านั้นในการควบคุมซอร์สโค้ด

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


only the .sln & .*proj should be registered- คุณไม่ลืมไฟล์จำนวนมากที่นี่หรือ
— Wolf

@ Wolf นอกเหนือจากที่เห็นได้ชัด
— Polluks

3

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


2

ไม่พวกเขาไม่ควรมุ่งมั่นในการควบคุมแหล่งที่มาเนื่องจากเป็นการตั้งค่าเฉพาะของผู้พัฒนา / เครื่อง

GitHub รักษารายการประเภทไฟล์ที่แนะนำสำหรับผู้ใช้ Visual Studio ที่จะไม่สนใจ https://github.com/github/gitignore/blob/master/VisualStudio.gitignore

สำหรับ svn ฉันมีglobal-ignoreชุดคุณสมบัติต่อไปนี้:

* .DotSettings.User
* .onetoc2
* .suo
.vs
PrecompiledWeb
thumbs.db
obj
bin
debug
* .user
* .vshost. *
* .tss
* .dbml.layout


1

หากคุณตั้งค่าการพึ่งพา dir ที่สามารถเรียกใช้งานได้ของคุณในProjectProperties> การดีบัก> สภาพแวดล้อมพาธ จะถูกเก็บไว้ในไฟล์ '.user'

สมมติว่าฉันตั้งค่าสตริงนี้ในฟิลด์ที่กล่าวถึงข้างต้น: "PATH = C: \ xyz \ bin" นี่คือวิธีที่มันจะถูกเก็บไว้ในไฟล์ '.user':

<LocalDebuggerEnvironment>PATH=C:\xyz\bin$(LocalDebuggerEnvironment)</LocalDebuggerEnvironment>

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

แม้ว่าจะขึ้นอยู่กับโครงการทั้งหมด คุณสามารถรับสายได้ตามความต้องการของคุณ


ลิงก์สัญลักษณ์ยังทำงานได้ดีมากสำหรับวัตถุประสงค์นี้
— sןɐunıɔןɐqɐp

1

ตามที่อธิบายไว้ในคำตอบอื่น ๆ ทั้ง.suoและ.userไม่ควรถูกเพิ่มลงในการควบคุมแหล่งที่มาเนื่องจากเป็นเฉพาะผู้ใช้ / เครื่อง (BTW .suoสำหรับเวอร์ชันล่าสุดของ VS ถูกย้ายไปยังไดเรกทอรีชั่วคราวโดยเฉพาะ.vsซึ่งควรเก็บไว้นอกการควบคุมแหล่งที่มาอย่างสมบูรณ์)

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

แทนที่จะใช้พา ธ สัมบูรณ์แบบ hard-coded ในไฟล์ดังกล่าวจึงเหมาะสมที่จะใช้ญาติหรือพึ่งพาตัวแปรสภาพแวดล้อมดังนั้นตัวอย่างอาจเป็นแบบทั่วไปพอที่จะให้ผู้อื่นใช้งานได้ง่าย

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