尝试导入DTE的CodeRefactoringProvider初始化期间发生异常

时间:2018-12-20 00:05:23

标签: c# visual-studio-2017 mef vsix

我正在构建自定义代码重构提供程序,作为Visual Studio 2017的扩展,并且希望它访问DTE服务。要获得它,我使用ImportingConstructorAttribute并为服务声明一个参数:

[ExportCodeRefactoringProvider( LanguageNames.CSharp, Name = nameof( MyCodeRefactoringProvider ) )]
[Shared]
internal class MyCodeRefactoringProvider : CodeRefactoringProvider {
    private readonly DTE m_dte;

    [ImportingConstructor]
    public MyCodeRefactoringProvider( DTE dte ) {
        m_dte = dte;
    }

    public sealed override async Task ComputeRefactoringsAsync( CodeRefactoringContext context ) {
        //...
    }
}

但是,当我在Visual Studio实验实例中运行提供程序时,未实例化该提供程序。

如果我不尝试导入服务提供程序,则重构提供程序可以正常工作。如果我在属性上使用ImportAttribute而不是ImportingConstructorAttribute,则会发生相同的问题。

Visual Studio的ActivityLog.xml中也没有任何内容。

如何通过MEF导入DTE

0 个答案:

没有答案