Tôi có nên thêm tệp Visual Studio .suo và .user vào kiểm soát nguồn không?


841

Các giải pháp Visual Studio chứa hai loại tệp người dùng ẩn. Một là .suotệp giải pháp là tệp nhị phân. Khác là .usertệp dự án là một tệp văn bản. Chính xác thì những tập tin này chứa những dữ liệu nào?

Tôi cũng đã tự hỏi liệu tôi có nên thêm các tệp này vào kiểm soát nguồn hay không (Subversion trong trường hợp của tôi). Nếu tôi không thêm các tệp này và nhà phát triển khác kiểm tra giải pháp, Visual Studio có tự động tạo tệp người dùng mới không?


9
tập tin .suo được tạo lại tự động. Một cách tuyệt vời để 'làm mới' bạn cài đặt thành mặc định nếu mọi thứ bị hỏng.
CodingBarfield

3
Thực tiễn tốt nhất cho các dự án Subversion và Visual Studio là một câu hỏi chung chung hơn về chủ đề chính xác này. Ngoài ra, câu trả lời được chấp nhận của nó chứa một liên kết đến tài liệu MSDN chính thức, mô tả chi tiết các tập tin / thư mục của các giải pháp / dự án VS nên được thêm vào các hệ thống kiểm soát nguồn và phần nào nên được bỏ qua.
Attila Csipak

3
cho * .suo, vui lòng xem tại đây: msdn.microsoft.com/en-us/l
Library / bb165909.aspx

Câu trả lời:


673

Các tệp này chứa các cấu hình tùy chọn người dùng nói chung dành riêng cho máy của bạn, vì vậy tốt hơn là không đặt nó trong SCM. Ngoài ra, VS sẽ thay đổi nó hầu như mỗi khi bạn thực hiện nó, do đó, nó sẽ luôn được SCM đánh dấu là 'thay đổi'. Tôi cũng không bao gồm, tôi đang ở trong một dự án sử dụng VS trong 2 năm và không gặp vấn đề gì khi làm điều đó. Khó chịu nhỏ duy nhất là các tham số gỡ lỗi (đường dẫn thực thi, mục tiêu triển khai, v.v.) được lưu trữ trong một trong các tệp đó (không biết là gì), vì vậy nếu bạn có một tiêu chuẩn cho chúng, bạn sẽ không thể ' xuất bản 'nó thông qua SCM để các nhà phát triển khác có toàn bộ môi trường phát triển' sẵn sàng sử dụng '.


22
Hãy cẩn thận, tập tin suo lưu trữ thông tin cho dù dự án được tải / không tải trong giải pháp.
Kugel

5
Tôi tin rằng nó lưu trữ thông tin gỡ lỗi trong tệp .user (ít nhất là đối với Công cụ dữ liệu SQL Server). Ngoài ra, khi bạn thay đổi cài đặt trong tab Gỡ lỗi, không phải lúc nào bạn cũng kiên trì sử dụng .user (đóng giải pháp dường như hoạt động, hơi khó chịu ... hoặc thay đổi cài đặt khác được lưu trữ trong tệp .sqlproj).
jamiebarrow

87
Bạn có thể mở cả tệp .user và .csproj trong bất kỳ trình soạn thảo văn bản nào. Tôi vừa thử nghiệm sao chép các cài đặt gỡ lỗi có liên quan từ .user vào .csproj, sau đó xóa tệp .user. Gỡ lỗi tiếp tục hoạt động, vui vẻ đọc các cài đặt chính xác từ vị trí mới của chúng trong tệp .csproj. Điều này sẽ cung cấp một cách để cam kết cài đặt gỡ lỗi mà không cam kết tệp .user. Hãy chắc chắn rằng bạn đặt chúng trong cấu hình phù hợp (gỡ lỗi, phát hành, v.v.). Hoạt động trên máy của tôi! =)
Chris Nielsen

139

Bạn không cần thêm những thứ này - chúng chứa các cài đặt theo người dùng và các nhà phát triển khác sẽ không muốn bản sao của bạn.


19
Nếu bạn đang làm việc một mình trên một số máy khác nhau, có đáng để thêm chúng không?
thepocketwade

33
Tôi sẽ không, bởi vì nó có thể dễ vỡ trước những khác biệt hệ thống bất ngờ; ví dụ: nếu bạn làm việc trên x64 tại nơi làm việc và x86 ở nhà, thì nó có thể bị nghẹt "tập tin chương trình c: \ (x86)" và "tập tin chương trình". Tôi không biết, nhưng tôi sẽ không mạo hiểm.
Steve Cooper

2
Mặc dù chúng chứa thông tin cụ thể của người dùng, nhưng thông tin của các tệp mới được thêm thông qua tùy chọn (bao gồm trong dự án) cũng nằm trong tệp .csproj, điều này đòi hỏi người dùng khác phải thêm thủ công tất cả các tài nguyên dự án mới được thêm vào. Nếu bất cứ ai biết một cách giải quyết, xin vui lòng đề cập ở đây.
zeppelin

69

Những người khác đã giải thích tại sao có *.suo*.usercác tập tin dưới sự kiểm soát nguồn không phải là một ý tưởng tốt.

Tôi muốn đề nghị bạn thêm các mẫu này vào svn:ignoretài sản vì 2 lý do:

  1. Vì vậy, các nhà phát triển khác sẽ không kết thúc với các cài đặt của nhà phát triển.
  2. Vì vậy, khi bạn xem trạng thái hoặc cam kết các tệp, các tệp đó sẽ không làm lộn xộn cơ sở mã và che khuất các tệp mới mà bạn cần thêm.

svn:ignoreTài sản được đặt ở đâu và như thế nào ?
Peter Mortensen

@PeterMortensen, xem câu hỏi này: stackoverflow.com/questions/86049/ trên
JXG

Nhưng có một trường hợp (xem câu trả lời này ) để thêm .user, vì vậy người ta có thể chọn không bỏ qua .suo- hoặc người ta có thể bỏ qua .user, để có một quyết định có ý thức để thêm chúng? Đừng nghĩ như vậy, quan điểm svn:ignorelà đánh dấu những thứ mà không cần quyết định có ý thức.
PJTraill

49

Chúng tôi không cam kết tệp nhị phân (* .suo), nhưng chúng tôi cam kết tệp .user. Ví dụ, tệp .user chứa các tùy chọn bắt đầu để gỡ lỗi dự án. Bạn có thể tìm thấy các tùy chọn bắt đầu trong các thuộc tính của dự án trong tab "Gỡ lỗi". Chúng tôi đã sử dụng NUnit trong một số dự án và định cấu hình nunit-gui.exe làm tùy chọn bắt đầu cho dự án. Nếu không có tệp .user, mỗi thành viên trong nhóm sẽ phải định cấu hình riêng.

Hi vọng điêu nay co ich.


4
Tôi cũng bắt đầu nghĩ rằng đây là trường hợp - cam kết tệp người dùng để các nhà phát triển trong một nhóm sử dụng các cài đặt gỡ lỗi tương tự. Nếu họ thay đổi nó trên máy riêng của họ, vẫn ổn, miễn là cách tiêu chuẩn là phiên bản trong kiểm soát nguồn.
jamiebarrow

1
Những người khác đã đề nghị không làm điều này, nhưng tôi không chắc những nguy hiểm có thể là gì. Có lẽ bởi vì tệp repo với các cài đặt ít chính xác hơn sẽ thổi bay bản sao cục bộ (tốt hơn) của người dùng? (Nhóm của chúng tôi đang sử dụng Mercurial, BTW.)
Jon Coombs

2
Microsoft khuyên không nên thêm tệp .user vào kiểm soát nguồn.
DavidRR

1
Bạn có thể di chuyển cài đặt gỡ lỗi sang .csproj, xem nhận xét này
Timbo

26

Vì tôi đã tìm thấy câu hỏi / câu trả lời này thông qua Google vào năm 2011, tôi nghĩ rằng tôi sẽ mất một giây và thêm liên kết cho các tệp * .SDF được tạo bởi Visual Studio 2010 vào danh sách các tệp có lẽ không nên thêm vào kiểm soát phiên bản ( IDE sẽ tạo lại chúng). Vì tôi không chắc chắn rằng tệp * .sdf có thể có quyền sử dụng hợp pháp ở nơi khác, tôi chỉ bỏ qua tệp [tên dự án] .sdf cụ thể từ SVN.

Tại sao trình hướng dẫn chuyển đổi Visual Studio 2010 tạo một tệp cơ sở dữ liệu SDF lớn?



23

Không, bạn không nên thêm chúng vào kiểm soát nguồn vì - như bạn đã nói - chúng là người dùng cụ thể.

SUO (Tùy chọn người dùng giải pháp): Ghi lại tất cả các tùy chọn mà bạn có thể liên kết với giải pháp của mình để mỗi lần bạn mở nó, nó sẽ bao gồm các tùy chỉnh mà bạn đã thực hiện.

Tệp .user chứa các tùy chọn người dùng cho dự án (trong khi SUO là giải pháp) và mở rộng tên tệp dự án (ví dụ: any.csproj.user chứa cài đặt người dùng cho dự án any.csproj).


20

Điều này dường như là ý kiến ​​của Microsoft về vấn đề này:

Thêm (và chỉnh sửa) tệp .suo vào kiểm soát nguồn

Tôi không biết tại sao dự án của bạn lưu trữ DebuggingWorkingDirectory trong tệp suo. Nếu đó là cài đặt cụ thể của người dùng, bạn nên xem xét việc lưu trữ đó trong tên tệp * .proj.user. Nếu cài đặt đó có thể chia sẻ giữa tất cả người dùng làm việc trong dự án, bạn nên xem xét việc lưu trữ nó trong tệp dự án.

Thậm chí đừng nghĩ đến việc thêm tệp suo vào kiểm soát nguồn!Tệp SUO (tùy chọn người dùng soluton) có nghĩa là chứa các cài đặt dành riêng cho người dùng và không được chia sẻ giữa những người dùng làm việc trên cùng một giải pháp. Nếu bạn đang thêm tệp suo vào cơ sở dữ liệu scc, tôi không biết những thứ khác trong IDE bạn sẽ phá vỡ, nhưng từ quan điểm kiểm soát nguồn, bạn sẽ phá vỡ tích hợp scc dự án web, plugin Lan vs Internet được sử dụng bởi những người dùng khác nhau để truy cập VSS và thậm chí bạn có thể khiến scc bị hỏng hoàn toàn (đường dẫn cơ sở dữ liệu VSS được lưu trong tệp suo có thể hợp lệ đối với bạn có thể không hợp lệ đối với người dùng khác).

Alin Constantin (MSFT)


Ngoài ra, từ tệp MSDN: Solution User Options (.Suo) . Câu đầu tiên làm cho ý định của Microsoft khá rõ ràng: "Tệp tùy chọn người dùng giải pháp (.suo) chứa tùy chọn giải pháp cho mỗi người dùng. Không nên kiểm tra tệp này để kiểm soát mã nguồn."
DavidRR

19

Theo mặc định, Visual SourceSafe của Microsoft không bao gồm các tệp này trong kiểm soát nguồn vì chúng là các tệp cài đặt dành riêng cho người dùng. Tôi sẽ theo mô hình đó nếu bạn đang sử dụng SVN làm kiểm soát nguồn.


12

Visual Studio sẽ tự động tạo ra chúng. Tôi không khuyên bạn nên đặt chúng trong kiểm soát nguồn. Đã có nhiều lần tệp SOU của nhà phát triển địa phương khiến VS hành xử thất thường trên hộp nhà phát triển đó. Xóa tệp và sau đó để VS tạo lại nó luôn khắc phục các sự cố.


Tôi đã có tệp .sou còn sót lại và nó đã gây ra sự cố khi tải lại các gói. Xóa tệp .sou đã khắc phục sự cố. Cảm ơn bạn.
mercedes

11

Trên trang web MSDN , nó nêu rõ rằng

Tệp tùy chọn người dùng giải pháp (.suo) chứa tùy chọn giải pháp cho mỗi người dùng. Không nên kiểm tra tệp này để kiểm soát mã nguồn .

Vì vậy, tôi muốn nói rằng sẽ khá an toàn khi bỏ qua các tệp này trong khi kiểm tra nội dung để kiểm soát nguồn của bạn.


9

Tôi sẽ không. Bất cứ điều gì có thể thay đổi trên mỗi "người dùng" thường không tốt trong kiểm soát nguồn. thư mục .suo, .user, obj / bin


8

Các tệp này là các tùy chọn dành riêng cho người dùng, phải độc lập với chính giải pháp. Visual Studio sẽ tạo những cái mới khi cần thiết, vì vậy chúng không cần phải được kiểm tra để kiểm soát nguồn. Thật vậy, có lẽ tốt hơn là không nên vì điều này cho phép các nhà phát triển cá nhân tùy chỉnh môi trường của họ khi họ thấy phù hợp.


7

Bạn không thể kiểm soát nguồn các tệp .user, vì đó là người dùng cụ thể. Nó chứa tên của máy từ xa và những thứ phụ thuộc vào người dùng khác. Đó là một tập tin liên quan đến vcproj.

Tệp .suo là một tệp liên quan đến sln và nó chứa "tùy chọn người dùng giải pháp" (dự án khởi động, vị trí cửa sổ (cái gì được neo và ở đâu, cái gì nổi), v.v.)

Đó là một tệp nhị phân và tôi không biết liệu nó có chứa thứ gì đó "liên quan đến người dùng" hay không.

Trong công ty của chúng tôi, chúng tôi không kiểm soát các tệp đó dưới sự kiểm soát nguồn.


7

Chúng chứa các cài đặt cụ thể về dự án thường được chỉ định cho một nhà phát triển (ví dụ như dự án bắt đầu và trang bắt đầu để bắt đầu khi bạn gỡ lỗi ứng dụng của bạn).

Vì vậy, tốt hơn hết là không thêm chúng vào kiểm soát phiên bản, để lại VS tạo lại chúng để mỗi nhà phát triển có thể có các cài đặt cụ thể mà họ muốn.


5

.user là cài đặt người dùng và tôi nghĩ .suo là tùy chọn người dùng giải pháp. Bạn không muốn các tệp này dưới sự kiểm soát nguồn; chúng sẽ được tạo lại cho mỗi người dùng.



4

Sử dụng Rational ClearCase , câu trả lời là không. Chỉ nên đăng ký .sln &. * Proj trong kiểm soát mã nguồn.

Tôi không thể trả lời cho các nhà cung cấp khác. Nếu tôi nhớ chính xác, các tệp này là tùy chọn cụ thể của "người dùng", môi trường của bạn.


only the .sln & .*proj should be registered- không phải bạn đã quên rất nhiều tập tin ở đây?
Sói

@Wolf bên cạnh điều hiển nhiên
Polluks

3

Không thêm bất kỳ tệp nào vào kiểm soát phiên bản. Các tệp này được tạo tự động với thông tin cụ thể của trạm làm việc, nếu đăng ký vào kiểm soát phiên bản sẽ gây ra sự cố ở các trạm làm việc khác.


2

Không, họ không nên cam kết kiểm soát nguồn vì chúng là cài đặt cục bộ dành cho nhà phát triển / máy cụ thể.

GitHub duy trì danh sách các loại tệp được đề xuất cho người dùng Visual Studio bỏ qua tại https://github.com/github/gitignore/blob/master/VisualStudio.gitignore

Đối với svn, tôi có bộ thuộc tính sau global-ignore:

* .DotSinstall.User
* .onetoc2
* .suo
.vs
PrecompiledWeb
thumbs.db
obj
bin
gỡ lỗi
* .user
* .vshost. *
* .Sts
* .dbml.layout


1

Nếu bạn đặt các phụ thuộc thư mục thực thi của mình trong ProjectProperives> Debugging> Môi trường , các đường dẫn được lưu trữ trong các tệp '.user'.

Giả sử tôi đặt chuỗi này trong trường được đề cập ở trên: "PATH = C: \ xyz \ bin" Đây là cách nó sẽ được lưu trữ trong tệp '.user':

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

Điều này đã giúp chúng tôi rất nhiều khi làm việc trong OpenCV. Chúng tôi có thể sử dụng các phiên bản OpenCV khác nhau cho các dự án khác nhau. Một lợi thế khác là, rất dễ dàng để thiết lập các dự án của chúng tôi trên một máy mới. Chúng tôi chỉ phải sao chép các thư mục phụ thuộc tương ứng. Vì vậy, đối với một số dự án, tôi thích thêm '.user' vào kiểm soát nguồn.

Mặc dù, nó hoàn toàn phụ thuộc vào các dự án. Bạn có thể nhận một cuộc gọi dựa trên nhu cầu của bạn.


Liên kết tượng trưng cũng hoạt động rất tốt cho mục đích này.
sɐunıɔ qɐp

1

Như đã giải thích trong các câu trả lời khác, cả hai .suo.userkhông nên được thêm vào kiểm soát nguồn, vì chúng là dành riêng cho người dùng / máy (BTW .suocho các phiên bản mới nhất của VS đã được chuyển vào thư mục tạm thời dành riêng.vs , nên tránh hoàn toàn khỏi kiểm soát nguồn).

Tuy nhiên, nếu ứng dụng của bạn yêu cầu một số thiết lập môi trường để gỡ lỗi trong VS (các cài đặt như vậy thường được lưu trong .usertệp), có thể thuận tiện để chuẩn bị một tệp mẫu (đặt tên như thế .user.SAMPLE) và thêm nó vào kiểm soát nguồn để tham khảo.

Thay vì đường dẫn tuyệt đối được mã hóa cứng trong tệp như vậy, sẽ hợp lý hơn khi sử dụng các biến tương đối hoặc dựa vào các biến môi trường, do đó mẫu có thể đủ chung để người khác có thể dễ dàng sử dụng lại.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.