我在尝试一些工作室2010年扩展,在那里,我需要工作,与该事件暴露IMouseProcessor.

我可以告诉文档,我应该创造一个IMouseProcessorProvider和出口使用的是MEF,以便使它可以自动取Visual Studio.

我创建了这类:

[Export(typeof(IMouseProcessorProvider))]
[ContentType("code")]
internal sealed class MouseProcessorFactory : IMouseProcessorProvider
{        
    public IMouseProcessor GetAssociatedProcessor(IWpfTextView wpfTextView)
    {
        return new MouseProcessor();
    }
}

当我运行的实验实例,我的扩展是可见的,在扩展经理。但是我的自鼠处理器提供者是永远不会被称为。我失去了一些东西什么我做错了什么?

有帮助吗?

解决方案

采取直接从这个(没有地雷)网站:

延伸Visual Studio2010UML设计师–第1部分:开始

有关测试2错误的解决方法

不幸的是,有几个错误,在当前的有关测试2,我们必须围绕工作。我已经告诉他们将被固定在一个更新版本,但直到那时,让我带你通过这个项目的清理要求,使这项工作:

步骤1–调整。csproj文件

  1. 右侧击你的项目,并选择"卸载"项目。
  2. 右击再次在您的项目和选择"的编辑Yourprojectname.csproj"
  3. 在顶层的房地产集团,寻找的XML标签 <IncludeAssemblyInVSIXContainer>.它将被置于错误的。改变它,真的。
  4. 保存。csproj文件和重新装载到Visual Studio.

步骤2–调整。此文件

  1. 右键文件"的来源。扩展。此"和选择视码
  2. 在该文件的底部的一节添加下面的线。(是的,那些垂直柱都很重要。)

    <MefComponent>|Yourprojectname|</MefComponent>

  3. 保存和关闭的文件。

其他提示

它花了我一段时间才能找到完全解决这个问题,因此我将发布完整的解决方案:

  1. 正如所建议的280Z28,有一个错误的Beta SDK for2.你需要编辑。csproj手动,以确保你会被包括在产生安的文件。
  2. 作为JaredPar回答,TextViewRole attribtute应当添加到IMouseProcessorProvider执行情况。
  3. 最后,IMouseProcessorProvider还应当装饰的一名属性。

所有在所有,这个代码的工作:

[Export(typeof(IMouseProcessorProvider))]
[ContentType("code")]
[TextViewRole(PredefinedTextViewRoles.Editable)]
[Name("mouseproc")]
internal sealed class MouseProcessorFactory : IMouseProcessorProvider
{        
    public IMouseProcessor GetAssociatedProcessor(IWpfTextView wpfTextView)
    {            
        return new MouseProcessor();
    }
}

我相信你需要添加一个TextViewRole属性为好。

[TextViewRole(PredefinedTextViewRoles.Editable)]
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top