VS 2010 mouse processor extension - not working

后端 未结 3 751
北海茫月
北海茫月 2021-01-19 02:26

I am experimenting with a Visual Studio 2010 extension, where I need to work with the events exposed by IMouseProcessor.

As far as I can tell from the docs, I should

相关标签:
3条回答
  • 2021-01-19 03:05

    Taken directly from this (not mine) site:

    Extending Visual Studio 2010 UML Designers – Part 1: Getting Started

    VSSDK Beta 2 Bug Workarounds

    Unfortunately there are a couple of bugs in the current VSSDK Beta 2 that we have to work around. I’ve been told they will be fixed in an update release but until then, let me take you through the project cleanup required to make this work:

    Step 1 – Tweak the .csproj file

    1. Right click on your project and choose "Unload Project".
    2. Right click again on your project and choose "Edit Yourprojectname.csproj"
    3. In the topmost property group, look for the XML tag <IncludeAssemblyInVSIXContainer>. It will be set to false. Change it to true.
    4. Save the .csproj file and reload it into Visual Studio.

    Step 2 – Tweak the .vsixmanifest file

    1. Right click on the file "source.extension.vsixmanifest" and choose View Code
    2. At the bottom of the file in the section called add the following line. (Yes, those vertical bars are important.)

      <MefComponent>|Yourprojectname|</MefComponent>

    3. Save and close the file.

    0 讨论(0)
  • 2021-01-19 03:07

    It took me a while to find the complete solution to this problem, so I will post the complete solution here:

    1. As suggested by 280Z28, there is a bug in the SDK for Beta 2. You need to edit the .csproj manually to ensure that your assembly is included in the generated VSIX file.
    2. As JaredPar answered, the TextViewRole attribtute should be added to the IMouseProcessorProvider implementation.
    3. Lastly, the IMouseProcessorProvider should also be decorated with a Name attribute.

    All in all, this code works:

    [Export(typeof(IMouseProcessorProvider))]
    [ContentType("code")]
    [TextViewRole(PredefinedTextViewRoles.Editable)]
    [Name("mouseproc")]
    internal sealed class MouseProcessorFactory : IMouseProcessorProvider
    {        
        public IMouseProcessor GetAssociatedProcessor(IWpfTextView wpfTextView)
        {            
            return new MouseProcessor();
        }
    }
    
    0 讨论(0)
  • 2021-01-19 03:14

    I believe you need to add a TextViewRole attribute as well.

    [TextViewRole(PredefinedTextViewRoles.Editable)]
    
    0 讨论(0)
提交回复
热议问题