VSIX-Project:由于投射问题,无法获得当前的Workspace

时间:2017-07-17 06:54:50

标签: c# roslyn workspace vsix

我正在尝试为vs2017构建一个VSIX包,以使customtool可用。 我现在面临的问题是我无法在调试时获得当前工作区。 以下代码用于获取工作区:

var componentModel = (IComponentModel)Package.GetGlobalService(typeof(SComponentModel));
        var workspace = (Workspace)componentModel.GetService<VisualStudioWorkspace>();

第二行代码中抛出的错误是“无法将类型为'Microsoft.VisualStudio.LanguageServices.RoslynVisualStudioWorkspace'的对象强制转换为'Microsoft.VisualStudio.LanguageServices.VisualStudioWorkspace'。”。

我已经按照其他线程的建议将languageservices-package添加到项目中。

1 个答案:

答案 0 :(得分:2)

如果您加载了两个不同版本的Roslyn DLL,则会发生这种情况(您可以在Debug,Modules中查看)。

确保VSIX项目中对Roslyn的引用未设置为“复制本地”或“包含在VSIX中”。