Extending Visual Studio Code Review Functionality

2019-05-23 05:55发布

问题:

I am interested in writing an extension for Visual Studio 2013+ that enhances the current code review functionality available in TFS. This extension would add an additional control next to each comment in the Team Explorer - Code Review window. It would also need to hook into the event that saves a comment, and update the text of the comment based on the value of the control.

I have already written some extensions for Visual Studio that create tool windows and the like, so this is not an entirely new area for me. However, I am unclear how to go about adding content of hooking into events for an existing window (such as the code review window), and the documentation seems to be very light on how to approach this. My questions are:

-Is it possible to add controls to existing windows with Visual Studio extensions? Or is the extension functionality limited to adding new tool windows with custom UI? Would this be possible as an extension on top of the existing code review functionality, or would it have to completely re-implement the code review functionality, as extensions like Review Assistant appear to do?

-Is there anything documented specifically about the code review windows within the Visual Studio IDE, or any classes that allow extensions to interface with them? If there are any events documented in the IDE related to code reviews (ie: an event that fires upon saving a comment) that would be especially helpful.

Thanks for any help!

回答1:

A few months back we were also in the same situation but for disabling a control in the CodeReviewPage.

What we did was added a hidden section to the CodeReviewPage. When this section Initialize(object sender,...), and from the sender object received as an argument we used Reflection to reveal the CodeReviewPage object and then further explored the control inside that we wanted to disable. This object was then type cased to the Control class and then we had all the properties exposed for that control and then simply we applied the ctrlObj.IsEnable = false.

For your case you can expose the Section from the CodeReviewPage object from sender object and then modify the section or add a new control and bind some events to it.