我试图让Visual Studio的Workspace与roslyn一起使用。
我找到了一些关于此的主题,如下所示: How to get reference to 'Roslyn' Workspace object from IVsSolution?
我写了完全相同的代码:
var componentModel = (IComponentModel)Microsoft.VisualStudio.Shell.Package.GetGlobalService(typeof(SComponentModel));
var workspace = componentModel.GetService<Microsoft.VisualStudio.LanguageServices.VisualStudioWorkspace>();
但是我得到了这个错误...
&#34;未找到与约束匹配的导出:ContractName Microsoft.CodeAnalysis.Workspace RequiredTypeIdentity Microsoft.CodeAnalysis.Workspace&#34;
我真的不明白这个问题是什么。
答案 0 :(得分:0)
听起来Roslyn语言服务没有在Visual Studio的实验版本中运行。您必须从此处下载最终用户预览:http://msdn.microsoft.com/en-us/vstudio/roslyn.aspx
其中包括一个名为“将Roslyn预览安装到Roslyn实验蜂巢中”的程序,您必须运行该程序。
您正在运行的VSPackage必须具有命令行参数“/ rootSuffix Roslyn”。您可以通过在解决方案资源管理器中右键单击项目,单击属性并导航到“调试”来设置此项。
最后,您必须在.csproj XML文件中包含一个额外的属性:
<VSSDKTargetPlatformRegRootSuffix>Roslyn</VSSDKTargetPlatformRegRootSuffix>
我之前的一个问题有一个解释:Attach VsPackage to Roslyn Instance
答案 1 :(得分:0)
问题解决了。
我的问题来自于集会之间的冲突。
在我的项目中,有Roslyn程序集版本0.7.0,但在测试期间,在运行时,它是Roslyn版本0.6.0。
所以在Visual Studio / rootSuffix Roslyn中
使用Roslyn在每个项目中使用<VSSDKTargetPlatformRegRootSuffix>Roslyn</VSSDKTargetPlatformRegRootSuffix>
。
一切都好。