我正在第一次尝试Roslyn而且我正在编写一小段代码来阅读项目,类和类成员.
我正在使用MSBuildWorkspace该类来创建Roslyn工作区(MSBuildWorkspace.Create()).以下是我编写的代码的一小部分
using Microsoft.CodeAnalysis;
using Microsoft.CodeAnalysis.MSBuild; //Some problem in this line? Read on.
...
...
var workspace = MSBuildWorkspace.Create();
Solution solutionToAnalyze =
workspace.OpenSolutionAsync(pathToSolution).Result;
IEnumerable<Project> projectsToAnalyze =
solutionToAnalyze.Projects;
...
...
Run Code Online (Sandbox Code Playgroud)
当我在MSBuildWorkspace类上执行"转到定义"时,我能够导航到类的定义,我可以清楚地看到它的命名空间是Microsoft.CodeAnalysis.MSBuild(见下图).
但尽管这样,我不断收到错误消息,"类型或命名空间的MSBuild不会在using语句,我已经与评论强调了命名空间'Microsoft.CodeAnalysis’存在".我似乎无法得到这个错误背后的原因.我错过了什么吗?
由于@CZabransky提供的链接,我找到了答案.
基本上我忽略了我得到的下面的警告.(人们不应该忽视警告的另一个原因!o_O)
我的项目针对的是Framework 4.5版,所以这个程序集没有构建,因为它是针对v4.5.2版本构建的.我不得不将框架版本定位到4.6并且解决方案已成功构建.
希望这可以帮助!
您需要添加一个Microsoft.CodeAnalysis.Workspaces.MSBuild.dll来自 Nuget 包的引用Microsoft.CodeAnalysis.Workspaces.MSBuild。