最小的IVsTextViewCreationListener实现是什么?

Ans*_*iņš 5 mef visual-studio visual-studio-extensions visual-studio-2013

我创建了一个VISX项目,并编写了这段代码:

using Microsoft.VisualStudio.Editor;
using Microsoft.VisualStudio.TextManager.Interop;
using System.ComponentModel.Composition;

namespace MyExtension
{
    [Export(typeof(IVsTextViewCreationListener))]
    public class Main : IVsTextViewCreationListener
    {
        public void VsTextViewCreated(IVsTextView textViewAdapter)
        {
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

如果在VsTextViewCreated方法中放置一个断点,Visual Studio会通知我它将永远不会被击中。实际上,在调试器中启动的第二个Visual Studio实例中打开文件并不会触发它。

我究竟做错了什么?

Ser*_*sov 5

您需要为您的类指定 ContentType 和 TextViewRole:

[Microsoft.VisualStudio.Utilities.ContentType("text")]
[Microsoft.VisualStudio.Text.Editor.TextViewRole(Microsoft.VisualStudio.Text.Editor.PredefinedTextViewRoles.Editable)]
Run Code Online (Sandbox Code Playgroud)

另外,不要忘记在扩展清单中声明 MefComponent 资产:

在此输入图像描述

并确保在 .csproj 中:

<IncludeAssemblyInVSIXContainer>true</IncludeAssemblyInVSIXContainer>
Run Code Online (Sandbox Code Playgroud)