Visual Studio C # tuyên bố sụp đổ


180

Khi chỉnh sửa các khối mã thực sự dài (chắc chắn sẽ được cấu trúc lại bằng mọi cách, nhưng điều đó nằm ngoài phạm vi của câu hỏi này), tôi thường mong muốn khả năng thu gọn các khối lệnh như người ta có thể thu gọn các khối chức năng. Điều đó có nghĩa là, sẽ thật tuyệt nếu biểu tượng dấu trừ xuất hiện trên phác thảo mã cho mọi thứ được đặt trong dấu ngoặc nhọn. Nó dường như xuất hiện cho các hàm, lớp, vùng, không gian tên, cách sử dụng, nhưng không xuất hiện cho các khối có điều kiện hoặc lặp. Thật tuyệt vời nếu tôi có thể thu gọn những thứ như ifs, switch, foreaches, kiểu đó!

Tham gia vào đó một chút, tôi phát hiện ra rằng việc phác thảo C ++ trong VS cho phép điều này nhưng việc phác thảo C # trong VS thì không. Tôi thực sự không hiểu tại sao. Ngay cả notepad ++ cũng sẽ bị sập nếu tôi chọn định dạng C #, vì vậy tôi không hiểu tại sao Visual Studio không có.

Có ai biết bổ trợ VS2008 sẽ kích hoạt hành vi này không? Hoặc một số loại thiết lập ẩn cho nó?

Chỉnh sửa để thêm: chèn các vùng tất nhiên là một tùy chọn và nó đã xảy ra với tôi, nhưng thật lòng mà nói, tôi không cần phải bọc mọi thứ trong một khu vực đã được bọc trong niềng răng ... nếu tôi sẽ chỉnh sửa mã hiện có, tôi sẽ chỉ cấu trúc lại nó để phân tách mối quan tâm tốt hơn. ("gói" với các phương thức mới thay vì các vùng;)


6
BTW: Tôi thấy rằng hai phím tắt này giúp cuộc sống của tôi rất dễ dàng: Chuyển đổi phác thảo: Ctrl + M, M Thu gọn tất cả: Ctrl + M, O
Gaurav

2
Ctrl + M, L bật tắt thu gọn / mở rộng đệ quy. Tất nhiên, điều này có thể để lại cho bạn một dòng duy nhất. Tuy nhiên, bên trong dòng đó (Ctrl + M, M) để lại cho bạn một tệp tóm tắt độc đáo.
patridge

2
Đây là một plugin tương đương cho VS 2012: stackoverflow.com/questions/18388280/ cấp
Nhìn thoáng qua vào

có liên quan: Vấn đề với mã gấp của Jeff Atwood, 2008
Nick Alexeev

Câu trả lời:


267

Bắt đầu với Visual Studio 2017, thu gọn câu lệnh được tích hợp sẵn.

Có một số tiện ích mở rộng thực hiện nhiệm vụ này cho các phiên bản VS trước 2017, bắt đầu với phiên bản VS 2010:

Tiện ích mở rộng cuối cùng chỉ hỗ trợ VS 2015 và VS 2017, nhưng đây là tiện ích mạnh nhất.
Nó hỗ trợ tô màu cú pháp bên trong các khối bị sập, nó có khả năng chịu lỗi và tối ưu hóa cao hơn.

Nếu tiện ích mở rộng dường như không cài đặt sau khi bạn sử dụng trình duyệt để tải xuống, hãy thử sử dụng trình quản lý tiện ích mở rộng Visual Studio tích hợp.


Điều này thật tuyệt, tôi đã tìm kiếm thứ gì đó như thế này rất lâu. Nên là câu trả lời thực sự! (Nhưng chỉ khi bạn sử dụng phiên bản không thể hiện của VS2010, tôi đoán ...)
rikoe

Tiện ích mở rộng này rất tuyệt nhưng nó không hoạt động trên trình xử lý (.ashx)
Jemsworld


3
Thực tế là chúng tôi thậm chí cần plugin này cho Visual Studio đang gây chú ý. Đây phải là hành vi tiêu chuẩn. Lòng tốt.
Ryan Rodemoyer

@Odys, gỡ cài đặt và sau đó cài đặt lại tiện ích mở rộng để khắc phục sự cố Ctrl M + O.
Shahedur Rahman

21

Tôi không biết về bổ trợ, nhưng bạn đã đề cập đến các khu vực và tôi thấy không có gì sai khi làm điều gì đó như thế này ...

foreach (Item i in Items)
{
  #region something big happening here
  ...
  #endregion

  #region something big happening here too
  ...
  #endregion

  #region something big happening here also
  ...
  #endregion
}

EDIT: Trả lời câu hỏi EDIT: Bạn nói đúng, việc gắn bó nhiều vùng ở mọi nơi không phải là lý tưởng và tái cấu trúc có lẽ là cách tốt nhất. Nhưng có vẻ như bạn đang tìm kiếm thứ gì đó kỳ diệu sẽ "tổ chức" mã cho bạn và tôi không nghĩ rằng nó tồn tại.


IIRC, bạn không thể xác định các vùng trong một hàm.
Joel Coehoorn

10
mã của anh ấy là chính xác; bạn không bị giới hạn ở nơi bạn có thể xác định các khu vực như thế này (miễn là bạn không kết thúc ngoài phạm vi bắt đầu)
John

3
Xin vui lòng xem chỉnh sửa của câu hỏi ban đầu; hành động thủ công được yêu cầu từ phía nhà phát triển (ngay cả khi sử dụng phím tắt bao quanh vùng một hoặc hai lần nhấp) không thực sự trả lời câu hỏi / mong muốn điều này được thực hiện tự động
Grank

1
@Joel Tôi tin rằng bạn đang nghĩ về VB.NET
Bryan Anderson

Tất cả các plugin bạn tìm thấy được liên kết trong chuỗi này tốt hơn so với sử dụng các vùng. Đêm và ngày.
Nhìn thoáng qua

19

Bạn có thể thu gọn các khối văn bản cụ thể trong phòng thu trực quan, nhưng bạn phải tắt tính năng phác thảo tự động.

Nhấp chuột phải vào cửa sổ mã của bạn và chọn (Phác thảo | Dừng phác thảo)

Sau đó, chọn một số văn bản, nhấp chuột phải và chọn (Phác thảo | Ẩn lựa chọn)

Khi bạn bật lại phác thảo tự động, "Vùng" tùy chỉnh của bạn sẽ không còn bị sập nữa.


3
Đủ công bằng. Mặc dù vậy, tôi hy vọng tìm ra câu hỏi này để thêm các khối này vào phần phác thảo tự động, vì nó thực sự không có ý nghĩa đối với chúng.
Grank

1
Matt, bạn có thể làm điều đó (trong VS 2012) mà không cần dừng phác thảo tự động. Chỉ cần chọn văn bản và phác thảo> ẩn lựa chọn
nawfal

3

Visual Studio 2008 hỗ trợ các vùng bên trong các chức năng miễn là bạn giữ chúng ở cùng mức phân cấp mã

#region Won't work
for(int i = 0; i<Count; i++)
{
//do something
#endregion
}

for(int i=0; i<Count; i++)
{
#region Works fine
//do lots of stuff
#endregion
}

5
Điều này không phải là mới trong năm 2008 cũng hỗ trợ nó.
Kon

3

Hãy để tôi nói điều gì đó khác biệt: nhấn (ctrl+m,ctrl+h)hoặc trong chỉnh sửa> phác thảo> ẩn lựa chọn rất hữu ích.


1
@Mahdi câu hỏi là về công cụ sẽ thu gọn các khối mã. Bạn bấm vào một số kết hợp và các vòng lặp if, for / while, v.v ... của bạn đều được thu gọn để bạn có thể đọc mã của mình ở mức cao nhất có thể. Sau đó, bạn sẽ đi sâu hơn vào mã. Giải pháp của bạn không khả thi vì trước tiên bạn sẽ phải thu gọn tất cả các khu vực và bạn không thấy chính xác đó là khu vực nào. Chúc may mắn trong tương lai.
La Mã

1
trước tiên bạn có thể nhận xét một cái gì đó sau đó ẩn dưới đây để dễ dàng và linh hoạt hơn
M vào


0

Tôi sẽ nói thêm ở đây rằng trong năm 2010, Microsoft đã bổ sung các khả năng của WPF bằng cách sử dụng Khung mở rộng được quản lý (MEF), điều này sẽ cho phép chúng tôi mở rộng trình chỉnh sửa mã nguồn để tổ chức chúng theo cách tốt hơn để dễ đọc và dễ truy cập hơn.

Ví dụ, trình hiển thị Tóm tắt Nhận xét mà Scott Gu đã demo tại PDC 2008 .

Vì vậy, mong muốn một ngày mai tốt hơn cho các nhà phát triển :)


0

Coderush sẽ phác thảo tất cả các khối mã cho bạn. Không chắc chắn nếu nó cho phép bạn mở rộng / thu gọn các khối, nhưng phác thảo là điều tốt nhất tiếp theo. Tôi sử dụng resharper thay vì coderush mà theo như tôi biết không cung cấp sự sụp đổ khối :(


0

Tôi đã tìm thấy điều này cho Visual Studio 2013 và thấy nó rất hữu ích. Nó hoạt động ngay cả khi bạn đặt dấu ngoặc đơn giản xung quanh mã của mình bằng {.....}

Sau khi chia sẻ tôi thấy ai đó cũng đề cập đến liên kết này. Phiếu bầu của tôi cũng dành cho công cụ này.

Công cụ phác thảo C # cho Visual Studio 2013


0

Trong VS2017, bạn có thể đánh dấu một phần của mã, nhấp chuột phải, phác thảo> Ẩn lựa chọn. Điều này sẽ thu gọn mã và cung cấp một chuyển đổi đến phần được tô sáng.


-2

# vùng, # endregion là tùy chọn thông minh.


10
Quy tắc StyleCop SA1123: DoNotPlaceRegionsWithinElements: Vi phạm quy tắc này xảy ra bất cứ khi nào một khu vực được đặt trong cơ thể của một phần tử mã. Trong nhiều trình soạn thảo, bao gồm Visual Studio, vùng sẽ xuất hiện được thu gọn theo mặc định, ẩn mã trong vùng. Nói chung, việc che giấu mã trong cơ thể của một phần tử là một thực tế xấu, vì điều này có thể dẫn đến các quyết định tồi vì mã được duy trì theo thời gian.
Sam Harwell
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.