我在VSIX项目中一直在尝试Roslyn。目前我想做的是加载CurrentSolution。但是我最终得到了错误:
Unable to cast object of type 'Microsoft.VisualStudio.ComponentModelHost.ComponentModel'
to type 'Microsoft.VisualStudio.ComponentModelHost.IComponentModel'.
我已经为Microsoft.VisualStudio.LanguageServices和Microsoft.VisualStudio.ComponentModelHost安装了NuGet包。
在我的VSIX命令包类的Initialize方法中,我添加了这个:
var componentModel = (IComponentModel)Package.GetGlobalService(typeof(SComponentModel));
var workspace = (Workspace)componentModel.GetService<VisualStudioWorkspace>();
这给了我提到的例外。
Microsoft.VisualStudio.ComponentModelHost DLL的版本是15.0.0.0。
已经尝试过:
删除BIN文件夹并重建
重新启动Visual Studio
我只是不确定导致这种情况的原因,似乎无法找到有关此错误的信息,我们将非常感谢您的帮助。
答案 0 :(得分:0)
想到了要检查GAC的此DLL版本的想法。原来我有两个。通过Nuget软件包管理器,我安装了DLL的15.0.0.0版。但是我已经有一个14.0.0.0版本(不确定从何而来)。我从GAC和项目引用中删除了15.0.0.0,然后添加了现有的14.0.0.0参考。现在可以顺利投放。