Vì vậy, trong Visual Studio 2010 và sau đó , các API mở rộng mà bạn muốn ở trong không gian tên Microsoft.VisualStudio.Languages.IntelliSense. Ở mức cao, bạn muốn MEF xuất một số ICompletionSourceProvider
sẽ cung cấp các mục bạn cần. Có hai bài đăng trên blog tốt là here và here thể hiện kỹ thuật cơ bản.
Có hai vấn đề mà bạn sẽ gặp phải nếu bạn muốn làm cho ảnh chụp màn hình của mình trở thành hiện thực. (Đây là lý do tại sao tôi hỏi kịch bản, như lời khuyên của tôi ở đây sẽ thay đổi.) Đầu tiên, phương pháp này không hợp pháp cho phép bạn nối thêm vào một tập hợp hoàn thành hiện có, nhưng thay vào đó cung cấp một tập mới. Trong giao diện người dùng, tab này xuất hiện dưới dạng hai tab, như tab Chung/Tất cả trong trình chỉnh sửa Visual Basic. Đây là giới hạn của API hiện tại. Bạn có thể thử sửa đổi một trong các bộ hoàn thành hiện có trong số AugmentCompletionSource
của mình nhưng tôi không biết liệu nó có hoạt động hay không. Nó chắc chắn không được hỗ trợ, trong mọi trường hợp.
Thứ hai, thật khó để biết khi nào và ở đâu để giới thiệu mọi thứ. Trong ví dụ của bạn, bạn đã nói "IntelliSense cho string
". Đáng buồn thay, không có bất kỳ API nào (hiện tại) trong VS cho bạn biết điều gì trước dấu chấm. Bạn có thể thực hiện một số chẩn đoán đơn giản hoặc thử triển khai một số trình phân tích cú pháp đó là Good Enough ™ cho kịch bản của bạn, nhưng bạn sẽ phải chấp nhận ngay bây giờ rằng bạn sẽ không có kết quả hoàn hảo.
Dự án Roslyn nhằm khắc phục sự cố thứ hai, vì vậy bạn có thể thấy hữu ích khi khám phá thêm một chút. Vì chúng tôi hy vọng rằng nhiều người sẽ muốn gia hạn hoàn thành, chúng tôi cũng đang suy nghĩ về việc cung cấp các API có thể mở rộng khác nên bạn không phải cuộn một số từ ICompletionSourceProvider
từ đầu, nhưng các API đó không có trong CTP hiện tại.
[Disclaimer:. Tôi là một thành viên của nhóm Roslyn người làm việc trên IntelliSense]
Nguồn
2012-05-10 03:47:51
@oded ive chỉ cần bỏ ra một vài giờ tìm kiếm qua google, MSDN ect và havent được thể tìm thấy bất cứ điều gì ở tất cả về mở rộng intellisense, bạn có bất cứ đề nghị về nơi để thậm chí tìm nó? –
Xin lỗi Luke, tôi không mặc dù [Visual Studio Extensibility forum] (http://social.msdn.microsoft.com/Forums/en-US/vsx/threads) sẽ là một nơi khởi đầu tốt. Nhưng bạn _could_ rephrase câu hỏi để không yêu cầu các liên kết và thực sự là một câu hỏi lập trình trên chủ đề. – Oded
Ngoài ra, một ví dụ về những gì bạn muốn thêm vào Intellisense sẽ giúp ích rất nhiều. Có một số kỹ thuật khác nhau có thể cần thiết ... –