我正在尝试为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添加到项目中。
答案 0 :(得分:2)
如果您加载了两个不同版本的Roslyn DLL,则会发生这种情况(您可以在Debug,Modules中查看)。
确保VSIX项目中对Roslyn的引用未设置为“复制本地”或“包含在VSIX中”。