5

Tôi có thể tạo tiện ích mở rộng cho Visual Studio chạy trong nền ngay khi người dùng mở Visual Studio IDE không? Ví dụ, tôi đang xây dựng một phần mở rộng nhận được địa chỉ hiện tại của tập tin trong Visual Studio (với C#), nhưng tôi muốn phần mở rộng này luôn luôn chạy trong nền mà không cần phải kích hoạt bởi người dùng nhấn vào một nút hoặc nhấn một số phím sự phối hợp.Tự động chạy mã mở rộng trong Visual Studio khi khởi động

Điều này có thể, và nếu có, cách tốt nhất để làm điều đó là gì?

Bất kỳ trợ giúp nào sẽ được đánh giá rất nhiều! Trân trọng, Erfan

+0

Tùy thuộc vào những gì bạn đang cố gắng để làm, bạn có thể xác định phần mở rộng của bạn để tải với nhiều loại tập tin nhất định. –

Trả lời

4

Vì bạn đã gắn thẻ câu hỏi của mình với visual-studio-2010 Tôi cho rằng bạn đang làm việc trên "Bổ trợ" thay vì "Tiện ích mở rộng VSPackage".

Trong trường hợp này, bạn có thể sử dụng trình xử lý sự kiện OnConnection.

Nếu bạn đang làm việc trên Tiện ích mở rộng VSPackage, bạn có thể sử dụng thuộc tính ProvideAutoLoad.

Chỉ cần tìm kiếm các thông tin này, bạn sẽ tìm thấy đủ thông tin. Cả hai cách này cũng được mô tả ngắn gọn here under "How can I run my add-in code in a VSPackage?"

2

Đối với VS 2010 và cao hơn, phương pháp mở rộng được khuyến nghị là gói (VS 2015 sẽ không cho phép bổ trợ).

Để tải gói khi Visual Studio được tải, hãy xem HOWTO: Autoload a Visual Studio package.

Sau khi nạp, đóng gói của bạn có thể quan tâm đến hai loại khác nhau của các sự kiện thay đổi lựa chọn:

  • Để nhận được thông báo khi lựa chọn trong Solution Explorer thay đổi, có được giao diện IVsMonitorSelection và gọi AdviseSelectionEvents/UnadviseSelectionEvents và cung cấp một lớp thực hiện giao diện IVsSelectionEvents.
  • Để được thông báo khi cửa sổ hiện hoạt thay đổi (có thể là cửa sổ tài liệu hoặc cửa sổ công cụ), hãy triển khai giao diện IVsWindowFrameNotify.
1

Để tiện ích mở rộng thêm thuộc tính sau vào Lớp gói, điều này sẽ tải tiện ích khi giải pháp không mở trong studio trực quan. Tôi đã thử nghiệm này với VS 2015 và 2017.

[ProvideAutoLoad(UIContextGuids80.NoSolution)] 
Các vấn đề liên quan