VSIX项目中的Roslyn:无法将ComponentModel类型的对象强制转换为IComponentModel

时间:2017-02-28 16:54:34

标签: c# visual-studio-2015 roslyn vsix

我在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

我只是不确定导致这种情况的原因,似乎无法找到有关此错误的信息,我们将非常感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

想到了要检查GAC的此DLL版本的想法。原来我有两个。通过Nuget软件包管理器,我安装了DLL的15.0.0.0版。但是我已经有一个14.0.0.0版本(不确定从何而来)。我从GAC和项目引用中删除了15.0.0.0,然后添加了现有的14.0.0.0参考。现在可以顺利投放。