ฉันควรเพิ่มไฟล์ 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.