Tại sao bộ cài đặt là tùy chọn Startup được lưu trữ trong tệp suo chứ không phải tệp sln?


175

Có vẻ như cài đặt này phải được lưu trữ trong tệp giải pháp để nó được chia sẻ trên tất cả người dùng và một phần của kiểm soát mã nguồn. Vì chúng tôi không kiểm tra tệp suo, mỗi người dùng phải đặt riêng cái này có vẻ lạ.

Câu trả lời:


46

Tại sao nó phải là một sở thích không dành riêng cho người dùng?

Nếu tôi có một giải pháp với 10 tệp và một nhà phát triển chủ yếu thử nghiệm / sử dụng một trong những công cụ đó, tại sao điều đó lại ảnh hưởng đến những gì tôi khởi động?

Tôi nghĩ rằng MS đã lựa chọn đúng về điều này. Dự án tôi muốn bắt đầu khác xa với dự án mà các nhà phát triển khác muốn bắt đầu.


133
Thông thường, bạn sẽ có một dự án rất có thể là dự án khởi động mong muốn của mọi người để gỡ lỗi (ví dụ: trang web) và bạn không muốn có thư viện lớp làm dự án khởi động. Tôi không hiểu tại sao MS không thể cung cấp một cơ chế phù hợp (không phải là hack, tức là đặt cái mặc định ở trên cùng trong tệp .sln) để đặt dự án khởi động mặc định toàn cầu, sau đó cho phép. suo để ghi đè lên nó nếu muốn.
Jez

27
Theo cách nói ... Di chuyển dự án bạn muốn đặt làm dự án khởi động mặc định thành dự án đầu tiên trong tệp sln. Xóa tệp suo của bạn, mở lại giải pháp và woila, dự án đầu tiên đó sẽ là khởi động. Có thể có các yếu tố khác góp phần vào điều này, nhưng tôi đã tìm thấy nó khi tôi nhận thấy rằng một dự án đặc biệt tiếp tục mặc định khi tôi kiểm tra một dự án sạch từ kiểm soát nguồn.
misteraidan

2
Đây là một vấn đề khi sử dụng máy chủ xây dựng vì nó sẽ yêu cầu kiểm tra suo thành kiểm soát phiên bản để đặt dự án Khởi động chính xác và kiểm tra suo thành kiểm soát phiên bản là một ý tưởng tồi.
markshancock

2
@markshancock: Tại sao một máy chủ xây dựng quan tâm đến dự án khởi động? Tôi chưa bao giờ thấy đó là một vấn đề.
Jon Skeet

18
Tôi xin lỗi, Jon, nhưng tôi sẽ cho bạn -1 ở đây. Tôi là một người tin rằng các nhà phát triển nên có khả năng tải xuống mã và sau đó nhấn F5, hy vọng thiết lập phát triển thông thường nhất sẽ được xây dựng và bắt đầu. Tất nhiên, bạn nên có khả năng điều chỉnh các phần khởi động của mình cho hoàn cảnh cá nhân, nhưng chúng tôi sẽ có thể đặt mặc định cho hầu hết người dùng, như đã nêu ở trên. Câu trả lời của Oliver dường như đi theo một cách nào đó để làm điều đó, mặc dù có vẻ như nhiều dự án khởi nghiệp sẽ không thể kiểm tra nguồn kiểm soát, điều này thật đáng xấu hổ.
Stephen Holt

376

Điều hoàn toàn cần thiết là mọi người đều có thể tự xác định Dự án StartUp của mình, như Jon đã nói . Nhưng để có một mặc định chuyên dụng sẽ là tuyệt vời, và như tôi có thể nói, điều đó là có thể!

Nếu bạn không có tệp .suo trong thư mục giải pháp của mình, Visual Studio sẽ chọn dự án đầu tiên trong tệp .sln của bạn làm dự án khởi động mặc định.

  1. Đóng Visual Studio của bạn và mở tệp .sln trong trình soạn thảo văn bản yêu thích của bạn. Bắt đầu từ dòng 4, bạn sẽ thấy tất cả các dự án của bạn được gói gọn trong Project- EndProjectdòng.

  2. Cắt và dán dự án khởi động mặc định mong muốn vào vị trí trên cùng.

  3. Xóa tập tin .suo của bạn.

  4. Mở giải pháp của bạn trong Visual Studio. Ta daa!

Có giải thưởng đặc biệt nào không nếu bạn biết điều gì đó mà Jon không biết? ;-)


1
Cuối cùng! Điều này đã làm tôi khó chịu trong một thời gian dài nhưng không còn nữa! Tkanks :)
mdonatas

4
Nó dường như chỉ hoạt động nếu không có trong thư mục giải pháp: Ý tôi là thủ thuật này hoạt động cho các dự án gốc, từ kinh nghiệm của tôi với một số giải pháp tôi có.
jdehaan

25
Ôi! Bạn đã nghiền nát Jon! :))
Andrei Rînea

3
Điều gì xảy ra nếu có hai dự án mặc định - làm thế nào tôi có thể bắt đầu cả hai theo mặc định?
Amy B

6
@Oliver: Nhấp chuột phải vào Giải pháp -> Đặt Dự án khởi động ... -> Nhiều dự án khởi động. Một cú nhấp chuột bắt đầu nhiều.
Anton

46

Trong hầu hết các trường hợp, nó ý nghĩa để có một mặc định về điều này.

Sẽ tốt hơn nhiều nếu chứa một dự án khởi động mặc định và lưu trữ tệp này trong tệp .sln, nhưng có thể bị nhà phát triển ghi đè trong tệp .suo của họ. Nếu không tìm thấy cài đặt khởi động trong tệp .suo, dự án khởi động mặc định trong .sln sẽ được sử dụng.

Trên thực tế, điều này đã được đề xuất trên UserVoice của Visual Studio .


UserVoice được liên kết là "đóng để bỏ phiếu" nhưng không có bình luận nào về lý do.
yzorg

Đây chắc chắn là lập trường tốt hơn so với câu trả lời được chấp nhận. Tôi chưa từng làm việc trong một nhóm coi đó là một lợi thế để đặt điều này trên cơ sở cho mỗi người dùng. Nó chỉ dẫn đến thiết lập thêm trên các bản sao mới, v.v.
Trevor Reid

3

Tôi đã viết một tiện ích dòng lệnh nhỏ cho Windows được gọi slnStartupProjectđể tự động thiết lập Dự án khởi động:

slnStartupProject slnFilename projectName

Cá nhân tôi sử dụng nó để thiết lập dự án khởi động sau khi tạo giải pháp với cmake luôn đặt ALL_BUILDdự án giả là dự án đầu tiên trong giải pháp.

Các nguồn là trên GitHub. Dĩa và phản hồi đều được chào đón.


Cảm ơn vì điều đó! Tôi đã có chính xác vấn đề này với cmake và tiện ích của bạn hoạt động rất tốt!
sippa

1
Không có gì! Thật vui vì điều đó đã giúp tôi làm phiền tôi trong nhiều năm trước khi tôi quyết định giải quyết vấn đề đó mãi mãi. Không thực sự hiểu lý do tại sao mọi người có chiến đấu triết học về điều này trong khi nó rõ ràng hữu ích trong hầu hết các trường hợp.
michaK

Bạn .. đợi ... cái gì? - bạn tạo tập tin .sln của mình bằng tay? ... đây là phép thuật gì vậy?
BrainSlugs83

3

Nếu bạn đang sử dụng GIT, bạn có thể cam kết tệp SUO mặc định và sau đó đánh dấu nó là không thay đổi bằng cách sử dụng

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

Nó cũng hoạt động nếu bạn muốn có nhiều dự án trong nhóm bắt đầu mặc định của mình. Nhược điểm duy nhất mà tôi biết là lệnh này phải được chạy bởi tất cả những người không muốn thực hiện tệp SUO.

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.