87

Thực tiễn tốt nhất là cam kết tệp .sln để kiểm soát nguồn? Khi nào nó thích hợp hoặc không thích hợp để làm như vậy?Liệu một .sln có được cam kết kiểm soát nguồn không?

Cập nhật Có một số điểm tốt được đưa ra trong câu trả lời. Cảm ơn bạn đã trả lời!

+21

Tôi tin rằng đó là tệp .SUO bạn KHÔNG muốn cam kết. – apandit

+0

Chỉ cần cho hồ sơ, tôi tin rằng danh sách công việc (nếu bạn sử dụng chúng) được lưu trữ trong tập tin .SUO ... Vì vậy, mặc dù bạn có thể không muốn cam kết chúng để kiểm soát nguồn, bạn có thể không muốn 'chỉ cần xóa' chúng như cruft không liên quan. – Benjol

Trả lời

62

Tôi nghĩ rằng rõ ràng từ các câu trả lời khác rằng tệp giải pháp hữu ích và cần được cam kết, ngay cả khi chúng không được sử dụng cho các bản dựng chính thức. Chúng tiện dụng cho bất kỳ ai sử dụng các tính năng của Visual Studio như Go To Definition/Declaration.

Theo mặc định, chúng không chứa đường dẫn tuyệt đối hoặc bất kỳ hiện vật cụ thể nào của máy khác. (Thật không may, một số công cụ bổ trợ không duy trì đúng thuộc tính này, ví dụ, AMD CodeAnalyst.) Nếu bạn cẩn thận sử dụng các đường dẫn tương đối trong các tệp dự án của bạn (cả C++ và C#), chúng sẽ độc lập với máy quá.

Có thể câu hỏi hữu ích hơn là: bạn nên loại trừ những tệp nào? Dưới đây là nội dung của tập tin .gitignore của tôi cho các dự án VS 2008 của tôi:

*.suo 
*.user 
*.ncb 
Debug/ 
Release/ 
CodeAnalyst/ 

(. Các mục cuối cùng là chỉ dành riêng cho các hồ sơ AMD CodeAnalyst)

Đối với VS 2010, bạn cũng nên loại trừ những điều sau đây:

ipch/ 
*.sdf 
*.opensdf 
+2

Tôi cũng có một quy tắc bỏ qua cho kết quả kiểm tra Đơn vị. Một số người có thể kiểm tra chúng nhưng tôi không thích sự lộn xộn –

+9

+1 - Cá nhân tôi cũng không cam kết bất cứ thứ gì được xây dựng, do đó bin/và obj/ –

+0

Tôi chỉ cam kết các tệp .sln chứa nhiều hơn 1 dự án – Justin

56

Có - Tôi nghĩ rằng nó luôn phù hợp. Cài đặt người dùng cụ thể nằm trong các tệp khác.

+3

Chắc chắn .sln có tham chiếu đến tệp .prj (dự án) – dplante

18

Có bạn nên làm điều này. Một tệp giải pháp chỉ chứa thông tin về cấu trúc tổng thể của giải pháp của bạn. Thông tin là toàn cầu đối với giải pháp và có khả năng phổ biến cho tất cả các nhà phát triển trong dự án của bạn.

Nó không chứa bất kỳ cài đặt cụ thể nào của người dùng.

4

Có, bạn luôn muốn bao gồm tệp .sln, tệp này bao gồm các liên kết đến tất cả các dự án có trong giải pháp.

2

Chúng tôi làm bởi vì nó giữ mọi thứ được đồng bộ hóa. Tất cả các dự án cần thiết được đặt cùng nhau, và không ai phải lo lắng về việc thiếu một dự án. Máy chủ xây dựng của chúng tôi (Ant Hill Pro) cũng sử dụng sln để tìm ra dự án nào cần xây dựng cho bản phát hành.

0

.slns là điều duy nhất chúng tôi chưa gặp sự cố với tfs!

+1

Thật buồn cười ... SLN là tệp duy nhất mà tôi từng phải khắc phục ... nhưng vấn đề là do các dev không cẩn thận với việc hợp nhất. –

5

Có, nó phải là một phần của điều khiển nguồn. Khi nào bạn thêm/xóa các dự án khỏi ứng dụng của mình, .sln sẽ được cập nhật và sẽ tốt hơn nếu có nó dưới sự kiểm soát nguồn. Nó sẽ cho phép bạn rút ra mã ứng dụng của bạn 2 phiên bản trở lại và trực tiếp làm một xây dựng (nếu có yêu cầu).

13

Bạn chắc chắn nên có nó. Bên cạnh những lý do mà những người khác đã đề cập, cần phải thực hiện một bước để xây dựng toàn bộ các dự án có thể.

8

Vâng, điều bạn nên cam kết là:

  • giải pháp (* sln),
  • hồ sơ dự án,
  • tất cả các file nguồn,
  • ứng dụng tập tin cấu hình
  • xây dựng các kịch bản

Những điều bạn nên không cam kết là:

  • tùy chọn sử dụng giải pháp (.suo) các tập tin,
  • xây dựng tạo ra file (ví dụ sử dụng một xây dựng kịch bản) [Edit:] - chỉ khi tất cả cần thiết xây dựng các kịch bản và các công cụ có sẵn dưới sự kiểm soát phiên bản (để đảm bảo xây dựng được xác thực trong lịch sử cvs)

Về file tự động tạo ra khác, có một separate thread.

+1

Tôi phải không đồng ý với "bất kỳ tệp được tạo tự động nào". –

+0

@Mehrdad bạn có nghĩ rằng các tệp Intelisense cũng nên được cam kết không? –

+1

@Edison: Không. Tôi đang đề cập đến các tệp nguồn được tạo tự động như ngữ cảnh dữ liệu LINQ to SQL, chẳng hạn. –

1

Trường hợp duy nhất mà bạn thậm chí sẽ không lưu trữ trong điều khiển nguồn sẽ là nếu bạn có một giải pháp lớn với nhiều dự án đã kiểm soát nguồn và bạn muốn tạo một giải pháp nhỏ với một số dự án từ giải pháp chính cho một số yêu cầu tạm thời riêng tư.

1

Có - Mọi thứ được sử dụng để tạo sản phẩm của bạn phải ở trong kiểm soát nguồn.

8

Tôi thường đồng ý rằng các tệp giải pháp phải được đăng ký, tuy nhiên, tại công ty tôi làm việc cho chúng tôi đã làm điều gì đó khác biệt. Chúng tôi có một kho lưu trữ khá lớn và các nhà phát triển làm việc trên các phần khác nhau của hệ thống theo thời gian. Để hỗ trợ cách chúng tôi làm việc, chúng tôi sẽ có một tệp giải pháp lớn hoặc một số tệp nhỏ hơn. Cả hai đều có một vài thiếu sót và yêu cầu công việc thủ công trên phần nhà phát triển. Để tránh điều này, chúng tôi đã thực hiện một plug-in xử lý tất cả những điều đó.

Trình cắm cho phép mỗi nhà phát triển kiểm tra một tập con của cây nguồn để làm việc đơn giản bằng cách chọn các dự án có liên quan từ kho lưu trữ. Các plugin sau đó tạo ra một tập tin giải pháp và sửa đổi các tập tin dự án trên bay cho các giải pháp nhất định. Nó cũng xử lý các tham chiếu. Nói cách khác, tất cả các nhà phát triển phải làm là chọn các dự án thích hợp và sau đó các tập tin cần thiết được tạo ra/sửa đổi. Điều này cũng cho phép chúng tôi tùy chỉnh các cài đặt khác nhau để đảm bảo các tiêu chuẩn của công ty.

Ngoài ra, chúng tôi sử dụng plugin để hỗ trợ các chính sách đăng ký khác nhau, thường ngăn người dùng gửi mã bị lỗi/không tuân thủ đến kho lưu trữ.

+0

Âm thanh như thế này có thể là câu trả lời cho một trong những câu hỏi dài chưa được trả lời của tôi (http://stackoverflow.com/questions/1490728/what-are-the-advantages-of-having-projects-in-the-same-solution -if-you-use-file-r), có cơ hội nhận được bản sao của plugin này không? – Benjol

+0

@Benjol: Rất tiếc, không có công cụ nội bộ. Ngoài các tính năng ở trên nó cũng tích hợp với một số hệ thống nội bộ khác, vì vậy nó rất cụ thể cho cách chúng tôi chạy mọi thứ. Nếu bạn chỉ cần một phần giải pháp/dự án của những điều nó không phải là khó thực hiện. –

+0

OK, chỉ một điều, trong 'giải pháp lớn' của bạn, bạn có tham khảo dự án hoặc tham khảo tệp không? Và nếu nhà phát triển thêm tham chiếu mới vào tệp/dự án, plugin có thực hiện chuyển đổi thích hợp trước khi đăng ký không? Và làm thế nào để bạn xử lý các phụ thuộc mà nhà phát triển đã không chọn để kiểm tra? – Benjol

1

Chúng tôi lưu giữ hoặc giải pháp tệp trong TFS Version Control. Nhưng vì giải pháp chính là thực sự lớn, hầu hết các nhà phát triển có một giải pháp cá nhân chỉ chứa những gì họ cần. Các tập tin giải pháp chính chủ yếu được sử dụng bởi các máy chủ xây dựng.

-5

1) Tạo một dự án mới trong VS
2) Nhấp chuột phải vào các giải pháp trong Solution Explorer, chọn Add to Nguồn Control

Sản phẩm sln thêm vào kiểm soát nguồn? Đó là câu trả lời của bạn.

+2

Bạn đã đọc câu hỏi chưa? – jlembke

+2

Thực tiễn tốt nhất là đưa nó vào kiểm soát nguồn? Những người phát minh ra điều ******* dường như nghĩ như vậy (như câu trả lời của tôi sẽ chứng minh), câu trả lời hoàn toàn cho câu hỏi. – Will

+1

bạn rõ ràng là đam mê ... các tập tin ... – jlembke

1

Chúng tôi thường đặt tất cả các tệp giải pháp của chúng tôi vào thư mục giải pháp. Bằng cách này, chúng tôi tách giải pháp khỏi mã một chút và dễ dàng hơn trong việc chọn dự án mà tôi cần thực hiện.

4

Trong hầu hết các trường hợp, bạn nên thực hiện cam kết.sln tập tin để kiểm soát nguồn.

Nếu tệp .sln của bạn được tạo bởi công cụ khác (chẳng hạn như CMake) thì có thể không phù hợp để đặt chúng vào kiểm soát nguồn.

Các vấn đề liên quan