我对 Visual Studio 扩展开发不太熟悉,关于将现有的 vs 扩展迁移到 vs2015 的文档似乎相当不存在,或者只是对强调类型用法没有帮助。
尽管如此,我已经克隆了Mads Kristensen 的 JSON intellisense git 项目,以便我可以修改它以支持 VS2015。
我在最新(版本 14)Microsoft.Web.Editor.dll
程序集中的类方法引用存在问题。Microsoft.Web.Editor.ComponentLocatorWithOrdering<T>.ImportMany()
. 它似乎已从程序集中删除,我无法确定最新程序集中的正确方法/实现。
...
private readonly ItemHandlerRegistry<IJSONSmartTagProvider> _smartTagProviders;
private void RegisterSmartTagProviders()
{
// using Microsoft.Web.Editor;
IEnumerable<Lazy<IJSONSmartTagProvider>> providers = ComponentLocatorWithOrdering<IJSONSmartTagProvider>.ImportMany();
foreach (Lazy<IJSONSmartTagProvider> provider in providers)
{
_smartTagProviders.RegisterHandler(provider.Value.ItemType, provider.Value);
}
}
...
我对 v12 程序集、类型和方法的最佳参考来自whatdll.com。它没有描述它;它也没有在迁移的背景下提供任何关于它的材料(这最终是我发布这个问题的目的)。
额外考虑
该IJSONSmartTagProvder
类型是似乎封装的自定义类型, SmartTag
已弃用(或不推荐使用)。较新的(推荐)类型是SuggestedAction
(这似乎是称为Lightbulb的概念/组件的接口),但即使我是要将代码/自定义类型转换为使用较新的类型,我不一定知道如何在最新的Microsoft.Web.Editor
程序集中以类似于 Mads 在上述代码段中使用他的类型的方式使用它。(另外,我见过的唯一实现类ISuggestedAction
是在Rosyln中)。