我正在构建自定义代码重构提供程序,作为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
?